2

当我收到 PN 时,我正在尝试更新我的应用程序的徽章图标(已关闭)。

我已尝试将代码添加到其中,但在我的应用程序关闭时它不起作用。它在应用程序在前台运行时工作。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
       NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

//Accept push notification when app is not open
    if (remoteNotif) {
      [application setApplicationIconBadgeNumber:100];
    return YES;
    }

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

            [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 30];

    }
4

3 回答 3

4

如果您的应用程序已关闭或在后台,推送通知不会唤醒它。您需要在服务器端执行此操作,并在通知有效负载中包含您希望在图标上看到的数字:

{
    "aps" : {
        "alert" : "Your notification message",
        "badge" : 1
    }
}

查看有关推送通知编程指南的 Apple 文档

于 2013-07-22T06:44:20.920 回答
0

对于那个集合applicationIconBadgeNumber = 1或像下面这样0didFinishLaunchingWithOptions:方法......

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

请参阅UILocalNotification此链接ios-badge-number-live-update 的另一个答案

也是来自此链接的 RemoteNotifications 的另一个链接RemoteNotificationsPG Guide

于 2013-07-22T06:26:02.060 回答
0

由于推送通知由 iOS 而不是您的应用程序处理,因此您无法在收到推送通知时更改应用程序徽章。

但是您可以在推送通知的有效负载中发送徽章编号,但您必须在服务器端进行计算。

有效载荷可能如下所示:

    {
       "aps" : {
       "alert" : "You got your emails.",
       "badge" : 1
    }
  }

现在应用程序徽章图标将显示 1。

于 2013-07-22T06:59:35.750 回答