更新问题:
要求是;一旦收到无声通知,我想运行一个Web服务并在通知栏中显示一个班轮.如果应用程序也被杀死它必须工作.任何解决方法?
我正在尝试以下方法.
我是iOS新手,我在沉默推送通知方面苦苦挣扎,谷歌搜索很多并且卡住了.
当应用程序未启动时(即从应用程序切换器中删除应用程序时),当我收到静音推送通知时,iOS会唤醒我的应用程序吗?
我的工资负担是
{ aps: { content-available: 1,sound: "" } }
.
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler{ int CA=[[[userInfo valueForKey:@"aps"] valueForKey:@"content-available"] intValue]; if (CA==1) { my action... } completionHandler(UIBackgroundFetchResultNewData); }
当app处于前台和后台时,此方法被调用并且工作正常.当应用程序未处于运行状态时(即应用程序未从应用程序切换器启动或终止),唤醒我的应用程序.
解决方法
如果应用程序已从App Switcher中删除,iOS将不会唤醒您的应用程序,因为用户明确要求关闭您的应用程序.
如果用户至少打开一次您的应用程序,并且不从App Switcher中删除它,iOS将唤醒您的应用程序
我们在服务器端做的事情是:
如果用户的应用程序在我们发送静默通知后的一分钟内没有连接,(您可以根据需要进行设置),我们会发送另一个非静默推送通知来提醒用户.
由于App(未被用户关闭)应该自动获取数据,因此应该花费不到一分钟.
但就此而言,您需要一个比简单发送静默推送更复杂的服务器代码.
编辑:(对这个问题进行投票表明我已经过时了)
这个答案不再是真的……你现在可以用PushKit唤醒你的应用来做一些小事(比如下载小块数据来更新内容),即使App已经从App Switcher中删除了.