我写的是利用苹果的推送通知服务的应用程序。 一些推送通知的基于所述用户的位置,并且如果用户是从物体一定距离应仅被递送。 我不希望用户的位置不断地更新到我的服务器,并做检查的方式,第一,因为安全的原因;第二,以减少网络使用。 有没有一种方法,当推通知是由设备接收,做了检查通知的用户面前,如果不符合条件的,丢弃通知? 谢谢您的帮助!
Answer 1:
不,可悲的是你不能没有上时,应用程序没有启动该通知的用户点击运行在客户端上的任何代码。 你必须做你检查服务器端据此决定是否或不发送推。
Answer 2:
的推送,而你的应用程序没有运行(最典型的案例)接受是你的控制范围之外的通知。 一旦它们被发送,它们将被接收并显示给用户(假定用户已授予的权限)
你有过推送通知的控制,如果他们是你的应用程序运行时收到的。
也许你可以使用本地通知,而不是(即产生,并从用户的设备接收通知)。 你将不得不产生时,他们完全控制。
请记住,在应用程序的后台处理是不允许的,除了4件事
- 位置追踪(您可以订阅触发代码,当用户改变地理位置)
- 警报
- 玩音乐
- IP语音
超出这些东西不能在后台执行。
Answer 3:
与iOS7开始,你的代码可以运行,我引用,“粗略用户看到该通知同时”:
多任务的改进
使用推送通知的,通知新的内容可在用户应用程序可以获取的背景内容。 为了支持这种模式,包括在你的应用程序的Info.plist文件的远程通知值UIBackgroundModes关键。 此外,还必须实现应用程序:didReceiveRemoteNotification:fetchCompletionHandler:方法应用程序委托。
在这里看到更多的信息:
https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS7.html#//apple_ref/doc/uid/TP40013162-SW10
和这里:
https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW57
我还没有尝试过,但我不知道,如果你发送不具有标准的“警报”,在“APNS”,但在自定义值,“徽章”值的推送通知的有效载荷,它仍然会打电话给你的代码,但不显示推送通知。