【问题标题】:Silent push notification is not working静默推送通知不起作用
【发布时间】:2015-01-15 09:16:39
【问题描述】:

我正在尝试实现静默推送通知。我需要将静默推送通知数据保存在应用程序的数据库中,以便在用户使用该应用程序时向用户显示看不见的通知及其计数。 我正在使用 Xcode 6.1 并针对 iOS 7 及更高版本的设备。目前,我正在使用开发证书进行推送通知。 我已经在目标项目功能的后台模式下检查了远程通知,并且信息列表的后台模式在所需的后台模式下具有“应用程序下载内容以响应推送通知”。

在我的AppDelegate.m 中,我可以注册远程通知并获得设备令牌。现在,当我发送推送通知时,当应用程序处于前台时会调用我的委托方法,但当应用程序处于后台/未运行时,尽管我在横幅中收到推送通知,但不会调用它。

我已经在AppDelegate.m实现了这个方法

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
    NSLog(@"Received push notification");
}

我发送的有效载荷如下所示:

{ 
  aps: { 
          content-available: 1 
       }
}

我尝试添加优先级、声音等。但没有任何帮助。 当应用程序在后台运行或未运行时,有人可以帮我弄清楚如何在应用程序中保存静默推送通知数据吗? 请帮我解决这个问题。

【问题讨论】:

    标签: ios objective-c iphone apple-push-notifications


    【解决方案1】:

    因此,您绝对应该能够在后台接收它们,但请注意,如果用户故意从任务切换器中终止您的应用程序,那么它将不再获取它们。

    iOS 7 及更高版本的回调如你所说,但在此之前是

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    

    您似乎不太可能针对 iOS 6,所以我会选择格式错误的推送数据包或后台推送设置不完全正确。

    【讨论】:

      【解决方案2】:

      您是否将应用程序 info.plistUIBackgroundModes 设置为 remote-notificiton?

      那也加这个方法帮你调试

      - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
      {
         //Success
         handler(UIBackgroundFetchResultNewData);
      }
      

      【讨论】:

        【解决方案3】:

        静默推送通知不同于面向用户的通知。它们被视为低优先级,并且受到 APNS 和 iOS 的速率限制。在实践中,这意味着静默通知只能不经常发送,并且在将它们传递给应用程序之前可能会有很长的延迟。

        您所描述的行为可能是设备上的唤醒速率限制器。 iOS 限制启动应用程序以执行后台工作的频率。这是为了防止滥用行为 - 某些应用程序可能希望在后台保持活动状态,从而永远耗尽电池电量。

        连接 Xcode 时唤醒速率限制器未激活,这使得静默通知似乎立即传递。

        我的iOS Notifications book 有一章很长,描述了速率限制器以及如何使用它们。

        【讨论】:

          猜你喜欢
          • 2014-01-14
          • 2013-10-14
          • 1970-01-01
          • 1970-01-01
          • 2018-02-17
          • 2018-12-05
          • 1970-01-01
          • 1970-01-01
          • 2020-03-28
          相关资源
          最近更新 更多