【问题标题】:Update badge icon when app is closed应用关闭时更新徽章图标
【发布时间】:2013-07-20 19:22:51
【问题描述】:

当我收到 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];

    }

【问题讨论】:

    标签: iphone ipad apple-push-notifications


    【解决方案1】:

    对于applicationIconBadgeNumber = 10 中的didFinishLaunchingWithOptions: 方法,如下所示...

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

    查看UILocalNotification 的另一个答案来自此链接ios-badge-number-live-update

    还有来自此链接RemoteNotificationsPG Guide的远程通知的另一个链接

    【讨论】:

      【解决方案2】:

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

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

      查看Push Notification programming guide 上的 Apple 文档

      【讨论】:

      • 感谢您的澄清。我阅读了 Push Notification 编程指南,看到这句话:“如果在通知到达时目标应用程序没有运行,则播放或显示警报消息、声音或徽章值。如果应用程序正在运行,系统将传递通知应用程序委托作为 NSDictionary 对象。字典包含相应的 Cocoa 属性列表对象(加上 NSNull)。我一直认为应用程序可以在关闭时收听。
      【解决方案3】:

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

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

      有效载荷可能如下所示:

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

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

      【讨论】:

      • 感谢您的澄清。我阅读了 Push Notification 编程指南,看到这句话:“如果在通知到达时目标应用程序没有运行,则播放或显示警报消息、声音或徽章值。如果应用程序正在运行,系统将传递通知应用程序委托作为 NSDictionary 对象。字典包含相应的 Cocoa 属性列表对象(加上 NSNull)。我一直认为应用可以在关闭时收听
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      相关资源
      最近更新 更多