App :
处于前台,可通过didReceiveRemoteNotification(iOS 7 before)didReceiveRemoteNotification:fetchCompletionHandler:(iOS 7 after) 获取通知内容。
处于后台,可通过 didReceiveRemoteNotification:fetchCompletionHandler: 获取通知内容 //获取情况中与普通推送的唯一不同点,此时 iOS 系统允许开发者在 App 处于后台的情况下,执行一些代码,大概提供几分钟的时间,可以用来偷偷的刷新 UI、切换页面、下载更新包等等操作。
处于退出,无法获取通知内容。
通知内容类似如下:
{
"_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 消息的即时送达。










