从锁定屏幕启动时未调用didReceiveRemoteNotification

时间:2016-03-12 17:12:29

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

我正在将推送通知构建到我的iPhone应用程序中。我的AppDelegate中有以下内容

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    CCLogWarn(@"NOTIFICATION %@", userInfo);
    completionHandler(UIBackgroundFetchResultNewData);
}

CCLogWarn方法使用引擎下的可可伐木工人将日志发送到我的远程日志记录服务(papertrail)

以下是我遇到的情况:

  1. 在我的设备上安装应用,应用程序位于前台
  2. 从我的服务器触发通知,我看到信息显示在papertrail中,一切都很好!
  3. 按主页按钮将应用移至背景,发送另一个通知,并在屏幕顶​​部弹出。我点击它,应用程序启动,我看到信息显示在papertrail,一切都还不错!
  4. 按手机上的锁定按钮,然后发送另一个通知。当我再次按下锁定按钮以重新打开屏幕时,我会在锁定屏幕上看到通知并将其滑动。该应用程序启动但我没有看到任何显示在papertrail。似乎没有调用didReceiveRemoteNotification
  5. 然后我重复步骤2和3,我在papertrail中看不到任何内容。
  6. 然后我强制退出应用并重新启动它。然后我尝试第2步和第3步,然后再次工作(即我看到东西出现在papertrail中)。但是一旦我再次锁定手机,它就会停止呼叫didReceiveRemoteNotification,直到我强行退出并重新启动。
  7. 我在通知中发送content-available = 1。我还在应用程序功能中启用了后台模式,我在Info.plist中有以下内容

       <key>UIBackgroundModes</key>
       <array>
               <string>remote-notification</string>
               <string>fetch</string>
       </array> 
    

    我还在launchOptions中记录了didFinishLaunchingWithOptions字典,但是当从锁定屏幕启动应用时也没有调用。

    我问这个是因为当用户在锁定屏幕上收到通知时,我想去应用中的特定位置,我看到很多其他应用正在这样做,我想他们依赖于{从锁定屏幕启动应用程序时调用{1}}。

0 个答案:

没有答案