簡體   English   中英

增加推送通知徽章 iPhone

[英]Increment the Push notification Badge iPhone

是否可以在收到通知時增加徽章值。 或者我應該將計數作為有效載荷發送嗎?

如果我每次都將徽章值發送為“1”,如果應用程序未打開,我如何增加應用程序圖標中的徽章值。

我已經使用了此代碼但不起作用。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; 
}

通常在所有應用程序中,未讀通知計數都保存在服務器中。 當服務器向特定設備令牌發送推送通知時,它們會隨負載一起發送徽章計數。 一旦設備收到通知並且您的應用程序處於后台(或被終止),操作系統會自動將徽章計數更新為您的應用程序圖標。 如果您的應用程序是否正在運行,您將在

application:didReceiveRemoteNotification:

委托,因此您可以從 (NSDictionary *)userInfo 接收徽章計數。 因此,您可以使用該功能更新應用程序圖標徽章計數

[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];

認為這應該對您有所幫助。

如果應用程序未打開,除了有效載荷之外,您將無法增加徽章。

當一個推送通知來當你的應用程序在后台模式和要遞增證件號碼,你應該送badgeCount到服務器,讓服務器知道當前計數。

如果您從服務器端管理徽章計數,那么此代碼就足夠了:-

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    NSLog(@"remote notification: %@",[userInfo description]);

    if (userInfo) {
        NSLog(@"%@",userInfo);

        if ([userInfo objectForKey:@"aps"]) { 
            if([[userInfo objectForKey:@"aps"] objectForKey:@"badgecount"]) {
                [UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
            }
        }
    }
}

Urban Airship 使用他們的“自動徽章”功能支持這一點

打開App時收到遠程通知后,

使用以下代碼在 Appdelegate 文件的“didBecomeActive”方法中獲取當前徽章編號:

int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badgeCount = badgeCount + 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM