Iphone 应用程序关闭时更新徽章图标

Iphone 应用程序关闭时更新徽章图标,iphone,ipad,apple-push-notifications,Iphone,Ipad,Apple Push Notifications,当我收到PN时,我正在尝试更新appclosed的徽章图标 我尝试将代码添加到中,但当我的应用程序关闭时,代码不起作用。当应用程序在前台运行时,它会工作 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSDictionary *remoteNotif = [launchOptions objectForKey

当我收到PN时,我正在尝试更新appclosed的徽章图标

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

- (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];

    }
对于该设置,在didFinishLaunchingWithOptions:方法中applicationBadgeNumber=1或0,如下面所示

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
请参阅此链接中UILocalNotification的另一个答案

另外还有另一个用于此链接的远程通知的链接,该链接在didFinishLaunchingWithOptions中设置ApplicationBadgeNumber=1或0:method like bellow

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
请参阅此链接中UILocalNotification的另一个答案


另外,如果您的应用程序处于关闭状态或处于后台,推送通知将不会唤醒它。您需要在服务器端执行此操作,并在通知负载中包含您希望在图标上看到的号码:

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

如果你的应用程序已关闭或处于后台,则推送通知不会将其唤醒。您需要在服务器端执行此操作,并在通知负载中包含您希望在图标上看到的号码:

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

请查看

上的Apple文档,因为推送通知是由iOS处理的,而不是由应用程序处理的,因此在收到推送通知时,您无法更改应用程序标记

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

有效载荷可能如下所示:

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

现在,应用程序标记图标将显示1。

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

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

有效载荷可能如下所示:

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

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

感谢您的澄清。我阅读了Push Notification编程指南,看到了这样一句话:如果通知到达时目标应用程序没有运行,则会播放或显示警报消息、声音或标记值。如果应用程序正在运行,系统将通知作为NSDictionary对象传递给应用程序委托。字典包含相应的Cocoa属性列表对象和NSNull。我一直认为该应用程序可以在关闭时收听。感谢您的澄清。我阅读了Push Notification编程指南,看到了这样一句话:如果通知到达时目标应用程序没有运行,则会播放或显示警报消息、声音或标记值。如果应用程序正在运行,系统将通知作为NSDictionary对象传递给应用程序委托。字典包含相应的Cocoa属性列表对象和NSNull。我一直认为该应用程序可以在关闭时收听。感谢您的澄清。我阅读了Push Notification编程指南,看到了这样一句话:如果通知到达时目标应用程序没有运行,则会播放或显示警报消息、声音或标记值。如果应用程序正在运行,系统将通知作为NSDictionary对象传递给应用程序委托。字典包含相应的Cocoa属性列表对象和NSNull。我一直认为该应用程序可以在关闭时收听感谢您的澄清。我阅读了Push Notification编程指南,看到了这样一句话:如果通知到达时目标应用程序没有运行,则会播放或显示警报消息、声音或标记值。如果应用程序正在运行,系统将通知作为NSDictionary对象传递给应用程序委托。字典包含相应的Cocoa属性列表对象和NSNull。我一直认为应用程序可以在关闭时监听