【问题标题】:How can I get array of arrived Remote Notifications in iOS when the application open?应用程序打开时,如何在 iOS 中获取到达的远程通知数组?
【发布时间】:2016-01-06 17:28:20
【问题描述】:

我目前正在开发一个从 Web 服务器接收推送通知的 iOS 应用程序。

当应用程序在后台/前台运行时,我可以正常接收通知,但是当我的应用程序终止(从多任务模式滑动或锁定设备)时设备接收到通知时,DidReceiveRemoteNotification 方法不会'不被调用(但通知和横幅确实出现了!)。

所以我正在考虑在用户启动应用程序(FinishedLauncing 方法)时获取所有到达(未读)通知并清除所有通知,然后我可以先显示一些消息,因为获取数据从服务器确实需要一些时间。

如果用户单击其中一条通知打开我的应用程序,我确实可以从launchOptions 收到一条消息。但是有没有办法让他们全部获得?

【问题讨论】:

  • 在这里看到这个答案:stackoverflow.com/questions/20771312/…
  • 我看到答案是关于如何触发didFinishLaunchingWithOptions 和阅读launchOptions。我正在寻找的是获取收到(未读)通知的数组。

标签: ios objective-c iphone notifications google-cloud-messaging


【解决方案1】:

这不可能获得您收到的所有通知。

您只能接收用户从通知中心点击或选择的通知的有效负载。

但是有一种方法,您可以使用它来处理您的每个推送通知。 将值 1 的键 content-available 添加到您的 aps 字典中。

所以它看起来像,

{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
        },
        "badge" : 5
        "content-available" : 1
    }
}

如果 iOS 系统检测到 pushNotification 的这个键值为1, 它将调用您的 appDelegate 的 application:didReceiveRemoteNotification:fetchCompletionHandler:

【讨论】:

    【解决方案2】:

    userInfo 是包含推送通知的字典。 aps 是推送通知正文的键。

    -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
     NSLog(@"userInfo  %@",userInfo);   
    
     // you can get the required message as below
    
     NSString *msg = [userInfo valueForKey:@"aps"];
     NSLog(@"Push Notification:%@",msg);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多