【问题标题】:iOS - Content of pushiOS - 推送内容
【发布时间】:2012-09-04 12:08:46
【问题描述】:

我用谷歌搜索了很多,但我找不到答案。

我正在尝试在应用处于后台时获取推送通知的内容/有效负载。

方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

和

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

没用。

【问题讨论】:

  • 调用了方法didReceiveRemoteNotification:?还是不行?
  • 只有在推送通知到达时应用程序处于前台时才会调用它

标签: ios push apple-push-notifications payload


【解决方案1】:

如果您没有任何 background mode 用于应用程序(音频、gps 或 voip 之一),则不会立即调用方法 -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo,而是在用户按下“打开”按钮后将应用程序置于前台。如果他或她决定跳过通知,则您无能为力,这意味着您需要在应用程序回到前台时刷新状态,您不能依赖推送通知来更新数据。

更好的选择可能是使用徽章计数器来跟踪更改,您需要在服务器端计算它。然后,如果前台的应用程序具有正面的徽章编号,您会更新数据并重置计数器。然而,这并不完美,因为没有保证通知已交付 - 您仍然需要手动检查徽章计数器(或者您可以说检查更改的数量)。

【讨论】:

  • in -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 我将收到一个包含所有推送的数组,但这只有在应用程序已经在前台时才有效。当用户按下主页按钮并收到推送并启动应用程序时。我永远不会得到推动
  • 根据文档,此方法或application:didFinishLaunchingWithOptions:(有效负载存储在带有键UIApplicationLaunchOptionsRemoteNotificationKey)的选项中)作为接收的结果调用(如果应用程序未运行则打开)推送通知。
  • 阅读 Apple 文档的 Handling Local and Remote Notifications 部分以找出您做错了什么:developer.apple.com/library/ios/#DOCUMENTATION/…
  • 我在这里找到了解决方案stackoverflow.com/questions/10335762/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2017-02-11
  • 2021-11-25
  • 1970-01-01
  • 2016-07-28
相关资源
最近更新 更多