我使用此代碼在我的應用程序,因爲城市飛艇(UA)的有關文檔
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UAPush shared] resetBadge];
說,但它不工作,在應用程序圖標徽章不斷遞增。我在UA論壇的這個問題上看到了一些帖子,他們沒有給出明確的答案。
編輯#1:
我接到一個技術支持人員以下響應在UA有以下的建議,這真是棒極了:
你想要做什麼,是確保您的didFinishLaunchingWithOptions:(NSDictionary的*)launchOptions方法,您呼叫的以下內容:
[[UAPush shared] setAutobadgeEnabled:YES];
[[UAPush shared] resetBadge];//zero badge on startup
,也叫[[UAPush shared] resetBadge];在下面的方法,以及:
applicationDidBecomeActive:(UIApplication *)application
和
didReceiveRemoteNotification:(NSDictionary *)userInfo
技術人員還提到,分配0至applicationIconBadgeNumber是沒有必要的,所以我把它。仍然美麗的作品。
編輯#2:
我最後不得不修改應用:didReceiveRemoteNotification:以包括UA的的handleNotification的電話:applicationState:方法:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// Get application state for iOS4.x+ devices, otherwise assume active
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)])
{
appState = application.applicationState;
}
[[UAPush shared] handleNotification:userInfo applicationState:appState];
[[UAPush shared] resetBadge];
}
因爲我是在以下情況下有問題:
- 用戶在應用程序
- 推送通知收到
- 返回到主屏幕時
- 另一種推送通知被接收(如預期)沒有徽章是顯示在應用程序圖標
- 徽章顯示超過1
數大
通過上面的修改,可以處理這種情況。我想你必須告訴UA,當收到一個通知並且應用程序在前臺運行時處理該通知。
您正在本地清除徽章號碼。您還需要從Urban Airship服務器清除它。我不知道城市飛艇。但我確定它有一個API來重置服務器上的通知標誌。 – EmptyStack
我正在發送徽章號碼+1作爲我api中的增量。 –