IOS:Apple Push Notifications 理解
Posted
技术标签:
【中文标题】IOS:Apple Push Notifications 理解【英文标题】:IOS: Apple Push Notifications understanding 【发布时间】:2014-12-18 04:39:43 【问题描述】:关于推送通知的四个问题。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive)
//app is in foreground I can fetch
else
//App is in background, can I still fetch the server? Is there a time limit?
使用上面的代码,当应用程序在后台时,我还能获取服务器吗?有时间限制吗?如果答案是:不,我无法在后台获取服务器,还有其他选择吗?
除了在应用处于后台时触发某些方法在 30 秒内运行之外,使用静默通知还有其他好处吗?
如果使用静默通知并且应用在前台,是否仍然调用以下方法?
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
completionHandler(UIBackgroundFetchResultNewData);
在载荷中"content-available" : 1
是否调用了Q3(上图)中的方法?或者还有什么可以触发Q3中的方法?
【问题讨论】:
每个问题一个问题是最好的。你能把它编辑成你需要解决的关于推送通知的最小项目吗? 实际上我正在尝试找出最好的方法,所有四个问题都是相关的。 “获取服务器”是什么意思? 【参考方案1】:是的,当应用程序处于后台时,您仍然可以获取服务器。对于许多应用来说,后台状态只是在应用被暂停的过程中的短暂停留。
不,这是使用静默通知的主要好处,请参阅link。
是的 application:didReceiveRemoteNotification:fetchCompletionHandler: 被调用,无论应用程序状态如何。如果应用程序已暂停或未运行,则系统会唤醒或启动您的应用程序并将其置于后台调用方法之前的运行状态。 此方法旨在向用户显示更新的内容。调用此方法时,您的应用程序有最多 30 秒的挂钟时间来执行下载操作并调用指定的完成处理程序块。如果没有及时调用处理程序,您的应用将被暂停。
是的,它调用 application:didReceiveRemoteNotification:fetchCompletionHandler:,如果您希望推送通知在后台唤醒您的应用程序,您需要启用远程通知功能,然后实现代码处理该远程通知(如果您的应用尚未运行,则通过在 application:didFinishLaunchingWithOptions: 中检测它,或者在这种情况下通过实现 application:didReceiveRemoteNotification:fetchCompletionHandler:您的应用程序已经在运行)。作为对远程通知的响应,您将在内部触发您的获取代码。当然,您还需要注册远程通知并将令牌发送到您的服务器。请看这个discussion
【讨论】:
以上是关于IOS:Apple Push Notifications 理解的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序从后台删除时,Apple Push 通知不会在 ios 7 上传递
天蓝色通知中心上的 iOS13 apns-push-type 标头
[Azure通知中心上的iOS13 apns-push-type标头