【问题标题】:Application not responding to Newsstand notifications in iOS 7 (working on iOS 6 and earlier)应用程序在 iOS 7 中没有响应报亭通知(在 iOS 6 和更早版本上运行)
【发布时间】:2013-10-24 10:25:40
【问题描述】:

我们在商店中有一个使用 Xcode 4 构建的报亭应用。我们注意到,当应用处于后台时,对于运行 iOS 7 的设备,远程通知不再转发到我们的应用。如果设备在前台,则接收并处理通知。

此外,这些通知会在运行 iOS 6 及更早版本的设备上得到适当处理。

在设备上启用持久日志记录后,我们可以看到 iOS 7 设备收到了通知,但从未调用过 - [UIApplication application: didReceiveRemoteNotification:]

评估运行 iOS 5/6/7 的设备的设备日志,我们看到远程通知进来了:

Oct 24 11:24:22 iPad-Retina apsd[82] <Warning>: 2013-10-24 11:24:22 +0200 apsd[82]: <APSCourier: 0x14d8c7b0>: Received message for enabled topic 'com.companyname.ourapp' with payload '{
        aps =     {
        "content-available" = 1;
        importantInformation = @"23";
        sound = "";
    };
    }' onInterface: NonCellular  for device token: NO  with priority (null)

在 iOS 7 上,此通知不会转发到应用程序,但在早期版本的 iOS 上,我们会看到对以下方法的调用:

Oct 24 11:24:20 Pad2-3G Magic[1328] <Warning>: -[ApplicationDelegate application:didReceiveRemoteNotification:]

我们的报亭通知已成功处理。

有什么方法可以确保使用 iOS 6 SDK 的 iOS 7 设备成功下载报刊亭?

一个不涉及使用 Xcode 5 的答案,因此 iOS 7 SDK 至少在我们重新设计应用程序之前是更可取的。

提前致谢

【问题讨论】:

    标签: ios objective-c ios7 apple-push-notifications newsstand-kit


    【解决方案1】:

    我们使用以下假设设法解决了这个问题:

    iOS 7 在UIApplicationDelegate 中引入了-application:didReceiveRemoteNotification:fetchCompletionHandler:,我们假设未收到通知的原因可能是iOS 正在测试应用程序委托是否响应较新的选择器。

    Xcode 4 自然没有UIBackgroundFetchResult,因此该方法可以简单地使用NSUInteger 来实现。所以我们在应用程序委托中添加了该方法:

    - (void)application:(UIApplication *)application 
      didReceiveRemoteNotification:(NSDictionary *)userInfo
      fetchCompletionHandler:(void (^)(NSUInteger result))handler 
    {
        [self application:application didReceiveRemoteNotification:userInfo];
        handler(0);
    }
    

    此外,我们必须在应用程序列表中的 UIBackgroundModes 中添加远程通知。

    在任何 iOS 7 设备上使用 Xcode 4 构建代码成功地解决了问题并允许我们提交到商店。

    我希望这个答案可以帮助其他处于相同位置的人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      相关资源
      最近更新 更多