2013-08-23 101 views
5

我希望在接收推送通知時自動增加徽章號碼,例如:如果收到兩個通知,則數字顯示爲2,如果收到更多通知數量增加。當我打開應用程序時,我想讓這個數字返回零。那麼,我做的是以下幾點: 在應用程序代碼並完成發射收到來自APNS的推送通知時自動遞增徽章號碼

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

否則,在代碼中並接收遠程通知

application.applicationIconBadgeNumber = [[apsInfo objectForKey:@"badge"] integerValue];

在服務器中, php文件:

$payload = '{"aps": {"alert":"'.$message.'", "sound":"default","badge":"+1"}}'; 

但不幸的是,數字不增加,如果上面的代碼是錯誤的,請糾正我,謝謝你提前。

回答

3

推送通知中沒有選項來自動遞增徽章編號。您必須通過將在徽章上顯示的號碼。

此外application:didReceiveRemoteNotification:只會被稱爲如果應用程序運行在前臺。在這裏,您可以計算新的徽章號碼,但如果您的應用程序不在前臺,這不會對您有所幫助。

您還需要跟蹤徽章號碼服務器端。

+1

是的,我知道有沒有選擇,那就是什麼,我問?我怎麼能這樣做,你能告訴我如何跟蹤徽章號碼服務器端?請 – Fatima

+0

您必須爲您的網絡服務進行API調用,該應用可以調用該服務。如何做到這一點取決於你和你設置數據庫的方式。您的應用程序需要告訴服務器它讀取了哪些消息,並且您需要計算用戶未讀消息的數量。 – rckoenes

+1

@Fatima因爲我們不知道數據庫是如何建立的,也不知道數據是如何存在的,我們無法爲您解決問題。我可以爲你寫很多代碼來解決問題,但是你會問我如何將它與你的系統集成。此外,我們在這裏幫助但不爲您編寫代碼。 – rckoenes

1

,你可以這樣做以下

- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo { 

NSLog(@"userInfo:%@",userInfo); 

    badge_value+=[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"]intValue];<br> 
    NSLog(@"Totoal badge Value:%d",badge_value);<br> 

for (id key in userInfo) { 
    NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); 
} 
[UIApplication sharedApplication].applicationIconBadgeNumber = badge_value;} 
+0

謝謝,我會在星期一試試,然後給你一個反饋。 – Fatima

+0

在這個查詢中我應該放置什麼而不是+1:'$ payload ='{「aps」:{「alert」:''。$ message。'「,」sound「:」default「,」badge「:」 +1「}}';' – Fatima

+3

無需在php代碼中增加徽章。您需要在接受規範時增加徽章,並在讀取徽章時清除徽章。在ios方管理徽章。 – wasim