2012-05-24 3 views
3

Я экспериментирую с уведомлением об очистке из центра уведомлений (в тех случаях, когда обходные методы включают установку номера значка в 0, так как нет апи, чтобы удалить их).setApplicationIconBadgeNumber не оказывает никакого эффекта

Однако во время экспериментов я заметил, что я не могу заставить setApplicationIconBadgeNumber иметь какое-либо влияние на номер значка.

Например, если у меня есть:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  
     [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 5]; 

(и setApplicationIconBadgeNumber не называют нигде)

тогда нет значка для значка, не говоря уже один из них содержит ряд.

(Уведомление не устанавливая номер жетона, возможно, там должен быть номер значка, чтобы начать с, прежде чем setApplicationIconBadgeNumber: имеет никакого эффекта, может кто-нибудь подтвердить или опровергнуть это?)

UPDATE :, Я заметил это в консоли, возможно, связанные с ним:

May 24 16:12:49 unknown installd[138] <Error>: entitlement 'aps-environment' has value not permitted by a provisioning profile 
May 24 16:12:49 unknown SpringBoard[51] <Warning>: Killing com.mycompany.xxx for termination assertion 
May 24 16:12:50 unknown installd[138] <Error>: entitlement 'aps-environment' has value not permitted by a provisioning profile 
May 24 16:12:50 unknown SpringBoard[51] <Warning>: Reloading application state for 'com.mycompany.xxx' as its modification date or path has changed 
May 24 16:12:50 unknown SpringBoard[51] <Warning>: Reloading and rendering all application icons. 

последняя строка звучит уместно, это только начало не происходит, не знаю почему, я не изменил профили и т.д., и они до настоящего времени и действительного в Xcode. Я поставлю отдельный вопрос для этого

+0

Я не получаю, что в консоли больше, но Я до сих пор не могу получить значок значка. Делать мою голову. – Gruntcakes

ответ

2

Вы можете попробовать увеличить и уменьшить номер значка по одному.

[UIApplication sharedApplication].applicationIconBadgeNumber++;  

Хотя, я подозреваю, что ваша проблема больше зависит от того, когда ваша программа попадает в эту строку кода.

Надеюсь, это поможет.

+0

Нет, это ничего не делает. – Gruntcakes

0

Я только узнал, что это должно быть число> 0. Он не работал с отрицательным числом.

2

У меня тоже была эта проблема.

Хотя тестирование его на устройстве, ниже линии правильный вызов:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 5];

Его, где он получает называется, что имеет значение, хотя. Если вы только назовете это:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

Выполняется только в том случае, если приложение полностью закрыто. В то время как тестирование, потому что вы и из него много, приложение может войти только фон и быть приостановлен, в этом случае называют его так:

- (void)applicationDidBecomeActive:(UIApplication *)application 

Надежда, что помогает.

10

Если у вас возникли проблемы setApplicationIconBadgeNumber не работает в iOS8 + это потому, что вы должны спросить разрешение пользователя для местных уведомлений, начиная с iOS8:

UIUserNotificationType userNotificationTypes = UIUserNotificationTypeBadge; 
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; 
[application registerUserNotificationSettings:settings]; 
+0

Большое спасибо!Решила мою проблему для iOS9 + – quarezz

+1

Это также необходимо в iOS 8. – arlomedia

+0

@arlomedia: Вы правы. Я обновил свой ответ. спасибо – GingerBreadMane

Смежные вопросы