iOS 7 Background Remote Notification

举报
清雨小竹 发表于 2022/09/25 03:09:50 2022/09/25
【摘要】 简介 本次iOS 7在推送方面最大的变化就是允许,应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新。功能使用场景:(多媒体)聊天,Email更新,基于通知的订阅内容同步等功能,提升了终端用户的体验。 Remote Notifications 与之前版本的对比可以参考下面两张 Apple...

简介

本次iOS 7在推送方面最大的变化就是允许,应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新。功能使用场景:(多媒体)聊天,Email更新,基于通知的订阅内容同步等功能,提升了终端用户的体验。

Remote Notifications 与之前版本的对比可以参考下面两张 Apple 官方的图片便可一目了然。

iOS <wbr>7 <wbr>Background <wbr>Remote <wbr>Notification

iOS <wbr>7 <wbr>Background <wbr>Remote <wbr>Notification

如果只携带content-available: 1 不携带任何badge,sound 和消息内容等参数,则可以不打扰用户的情况下进行内容更新等操作即为“Silent Remote Notifications”。

iOS <wbr>7 <wbr>Background <wbr>Remote <wbr>Notification

客户端设置

开启Remote notifications

需要在Xcode 中修改应用的 Capabilities 开启Remote notifications,请参考下图:

iOS <wbr>7 <wbr>Background <wbr>Remote <wbr>Notification

修改通知处理函数

当注册了Backgroud Modes -> Remote notifications 后,notification 处理函数一律切换到下面函数,后台推送代码也在此函数中调用。

- ( void )application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfofetchCompletionHandler:( void (^)(UIBackgroundFetchResult))completionHandler;

服务端推送设置

推送消息携带 content-available: 1 是Background 运行的必须参数,如果不携带此字段则与iOS7 之前版本的普通推送一样。

使用Web Portal 推送

在“可选设置内”选择对应的参数。

iOS <wbr>7 <wbr>Background <wbr>Remote <wbr>Notification

使用 API 推送

只需在 Push API v2 的 n_extras->ios 内附加content-available":1 字段即可

{ "n_content" : "通知内容" , "n_extras" :{ "ios" :{ "content-available" : 1 , "badge" : 88 , "sound" : "happy" }, "user_param_1" : "value1" , "user_param_2" : "value2" }}

限制与注意

  • “Silent Remote Notifications”是在 Apple 的限制下有一定的频率控制,但具体频率不详。所以并不是所有的 “Silent Remote Notifications” 都能按照预期到达客户端触发函数。
  • “Background”下提供给应用的运行时间窗是有限制的,如果需要下载较大的文件请参考 Apple 的 NSURLSession 的介绍。
  • “Background  Remote Notification”  的前提是要求客户端处于Background 或 Suspended 状态,如果用户通过 App Switcher 将应用从后台 Kill 掉应用将不会唤醒应用处理 background 代码。

更详细的说明资料请查阅 Apple 官方的 iOS 开发文档。

文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/28439225

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。