iOS:推送运行方法而不显示通知
是的,这是可能的:
-
确保为远程注册通知,请参阅documentation here:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; return YES; }
-
还要确保编辑
Info.plist
并检查“启用背景模式”和‘远程通知’复选框: -
此外,还需要添加
"content-available":1
到您的推送通知的有效载荷,否则,如果它在后台应用程序将不会被唤醒(见documentation here) :对于推送通知来触发下载操作时, 通知的有效载荷必须包括其设置为1 价值的内容可用密钥。当该密钥存在时,系统将 背景中的应用程序(或将其启动到后台)并调用应用程序 委托人的 应用程序:didReceiveRemoteNotification:fetchCompletionHandler: 方法。你的实现该方法的应该下载 相关内容并将其集成到你的应用程序
所以有效载荷至少应该是这样的:
{ "aps" = { "content-available" : 1, "sound" : "" } }
刚刚离开的声音特性空和忽略警报/ text属性和通知将沉默。
不幸的是,应用程序将不会被唤醒,如果它没有运行在所有(强制退出),请参阅this answer。
是的,你要寻找的是silent push notification
s其中获得了introduced in iOS 7。看看docs regarding push notifications哪个状态:
aps字典也可以包含
content-available
属性。content-available
属性的值为1
可让远程通知充当“无声”通知。当无声通知到达时,iOS会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行背景信息处理。用户不会被告知由静默通知产生的新信息或更改的信息,但他们可以在下次打开您的应用程序时了解它。
和
content-available
-number
- 提供值为1的这个关键,以表明有新内容可用。包括这个键和值意味着当你的应用程序在后台启动或恢复时,调用application:didReceiveRemoteNotification:fetchCompletionHandler:
。 (书报亭应用,保证能够接收至少一个推,每24小时的窗口此键。)
然后,您可以反应因此,最终竟引发另一个通知,如果你觉得用户需要被告知某事(尽管对此不是100%肯定)。
更深入一点的信息和代码可以找到in this objc.io post。
我不能让它工作,当应用程序处于非活动状态(未激活),它的工作原理? – RCB
@RCB有你能在'背景Modes'了'背景fetch'和'远程Notifications'? – luk2302
@RCB [the docs](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler: )提供更多的信息,你需要做什么以及在什么情况下工作: – luk2302