推送通知和后台获取模式
这是我的理解,系统将要么从closures或在后台运行,并允许您提取之前,它显示系统警报给用户。
我必须下载一些数据以显示用户何时点击推送通知。
我看到我的提取活动正在执行,而推送显示给用户。 在我们完成数据提取之前,允许用户点击通知并启动应用程序。
它是否正确?
我本人没有机会使用推送通知和后台获取模式,
但根据文档 :
the system sends the notification to your app (launching it if needed) and gives it a few moments to process the notification before displaying anything to the user. You can use those few moments to download content related to the push notification and be ready to display it to the user.
所以据我了解,你应该有一些时间来反应(下载数据)的通知之前呈现给用户的东西,而不是在通知显示
文件没有提到什么被认为是“片刻”(不是我见过)。
所以也许下载操作比这些“片刻”
希望这可以帮助
在iOS7中使用所谓的“无声”推送通知,您可以从服务器发送特定的无声推送。 您需要添加额外的关键内容 –在您的aps字典中可用
"aps" : { "alert" : "alert", "sound" : "sound", "badge" : badge, "content-available" : 1 }
然后,您需要在您的项目中设置两种背景模式:远程通知和后台提取。
现在每个远程推送都会要求
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
你可以在这里实现任何后台逻辑。 例如,你可以开始一些获取过程(不再是30秒!),显示自定义本地通知(这取代了标准的远程屏幕上的推送),或在提取完成。
请确保您的应用程序允许在通知中心进行推送通知,并且允许在设置/常规中为您的应用程序进行后台应用程序刷新。
另一个重要的事情是,无声推动工作,直到你手动卸载你的应用程序的背景(双击主页button)。
请注意,这个无声的机制,直到iOS7.1工作不正确
即使使用UrbanAirShip等第三方,您也可以select是否显示AlertView。 任何如何,你可以决定不显示它,启动背景获取与完成块。 之后,您可以使用本地通知来显示您需要显示的数据。
在iOS 7及其下面,行为有些不同。
如果你可以提供更多的代码/实现,我可能会多一点帮助。