JSON

iOS教程:IOS推送的完整剖析(2)

字号+ 作者:H5之家 来源:H5之家 2016-10-10 14:00 我要评论( )

处于后台,可通过 didReceiveRemoteNotification:fetchCompletion Handler: 获取通知内容 //获取情况中与普通推送的唯一不同点,此时 iOS 系统允许开发者在 App 处于后台的情况下,执行一些代码,大概提供几分钟的

  处于后台,可通过 didReceiveRemoteNotification:fetchCompletion Handler: 获取通知内容 //获取情况中与普通推送的唯一不同点,此时 iOS 系统允许开发者在 App 处于后台的情况下,执行一些代码,大概提供几分钟的时间,可以用来偷偷的刷新 UI、切换页面、下载更新包等等操作。

  处于退出,无法获取通知内容。

  各种显示效果跟普通推送完全一样。

  必须携带 "content-available" = 1;

  必须携带 alert、badge、sound 中 至少 1 个字段。

  仅 iOS 7 以后支持。

  必须在 Xcode 工程中 TARGETS - Capabilities - Background Modes - Remote notifications 开启该功能,具体可参照 iOS 7 Background Remote Notification。

  App:

  通知内容类似如下:

  {

  "_j_msgid" = 2090737306;

  aps = {

  alert = "显示内容";

  badge = 1;

  "content-available" = 1; // 必带字段

  sound = default;

  };

  key1 = value1;

  }

  处于前台,可通过didReceiveRemoteNotification(iOS 7 before)didReceiveRemoteNotification:fetchCompletionHandler:(iOS 7 after) 获取通知内容。

  处于后台,可通过 didReceiveRemoteNotification:fetchCompletion Handler: 获取通知内容 // 获取情况中与普通推送的唯一不同点,此时 iOS 系统允许开发者在 App 处于后台的情况下,执行一些代码,大概提供几分钟的时间,可以用来偷偷的刷新 UI、切换页面、下载更新包等等操作。

  处于退出,无法获取通知内容。

  点击图标启动,无法获取通知内容。

  点击推送横幅启动,在 didFinishLaunchingWithOptions 获取通知内容。

  就是我们在手机上平时见到的推送通知。

  包含声音、横幅、角标、自定义字段。

  App :

  通知内容类似如下:

  {

  "_j_msgid" = 200806057; // 第三方附带的 id,用于统计点击

  aps = {

  alert = "显示内容";

  badge = 1; // App 角标,可推送 n、+n、-n 来实现角标的固定、增加、减少

  sound = default; // 推送声音,默认系统三全音,如需使用自己的声音,需要将声音文件拖拽&拷贝至 Xcode 工程目录任意位置,并在推送时指定其文件名

  };

  key1 = value1; // 自定义字段,可设置多组,用于处理内部逻辑

  key2 = value2;

  }

  处于前台,不会展示横幅,可通过 didReceiveRemoteNotification(iOS 7 before)didReceiveRemoteNotification:fetchCompletionHandler:(iOS 7 after)获取通知内容(前台展示横幅的方法看这里)。

  处于后台,会展示横幅,无法获取通知内容。

  处于退出,会展示横幅,无法获取通知内容。

  点击图标启动,无法获取通知内容。

  点击通知横幅启动,在 didFinishLaunchingWithOptions 获取通知内容。

  普通推送

  后台推送

  静默推送

  {

  "_j_msgid" = 3938587719;

  aps = {

  alert = "";

  "content-available" = 1; // 必带字段

  };

  key1 = value1;

  }

  推送目标篇

  别名、标签、Registration ID 均是第三方提供的用于更方便地指定推送目标的功能。

  Tip 6:推送根据目标的不同可分为:

  广播

  无差别发送给所有用户。

  别名 alias 推送

  第三方提供的功能

  一个手机的一款 App 只能设置一个 alias(可修改)。

  建议对每一个用户都取不同的别名,以此来确定唯一的用户(也可多个用户取 1 个别名)。

  推送时可指定多个 alias 来下发同一内容。

  仅指定 alias 的用户能够收到推送。

  标签 tag 推送

  第三方提供的功能。

  可设置多个、可增加、清空。

  用于指定多样的属性,如 『1000』+『daily』+『discount』 可用于表示月消费超过 1k、喜欢购买日用品、偏好折扣商品的用户。

  如果要删除,需要在上次设置时,将设置的 tags 保存至 NSUserDefaults,本次剔除不需要的 tag 后,再重新设置。

  推送时可指定多个 tag 来下发同一内容。

  手机如果设置了推送指定的多个 tag 中任一个tag,都能够收到推送消息。如指定 『1000』+『globe』+『original』 (千元级消费者、全球购、原价),那么设置了 『100』+『globe』+『discount』(百元级消费者、全球购、折扣价)的用户可以收到该推送消息。

  Registration ID 推送

  第三方提供的功能。

  在 Tip 3 的第 3 步时将 deviceToken 提供给第三方之后,其服务器会自动生成的指向该手机的唯一 id。

  可在推送时指定多个 id 来下发消息。

  可用于对核心用户、旗舰用户的精准推送。

  应用内消息篇

  Tip 7:应用内消息(以下简称消息 )和推送通知的区别,消息:

  不需要 Apple 推送证书。

  由第三方的服务器下发,而不是 APNs。

  相比通知,更快速,几乎没有延迟,可用于 IM 消息的即时送达。

  能够长时间保留离线消息,可获取所有历史消息内容。

  通过长连接技术下发消息,因此:

  手机必须启动并与第三方服务器建立连接。

  如果手机启动立刻切至后台,很可能连接没有建立。

  手机必须处于前台才能收到消息。

  手机从后台切回前台,会自动重新建立连接,并收到离线消息。

  没有任何展示(横幅、通知中心、角标、声音),因此可以:

  自定义字段实现 UI 效果。

  完全在静默情况下处理 App 内部逻辑。

  使用一些 App Store 审核不会通过的功能,在审核时关闭功能,上架后通过接收消息,开启相关功能。

  组合大招篇

  Tip 8:tags 的组合技巧

  见 Tip 5 - 标签 tag 推送。

  可以在服务端来统计分析用户行为,然后将指定的 tags 发送至手机,手机接收后再为用户打上对应的 tags。

  Tip 9:通知+消息的组合技巧

  首先来看通知和消息特性的对比:

  

达内培训

  由于各自的特性都存在差异,因此二者结合使用是使得 App 推送性能最大化的必然选择:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【达内科技】C++中消息自动派发之About JSON Encode

    【达内科技】C++中消息自动派发之About JSON Encode

    2015-11-24 17:05

网友点评
j