您的位置:首页 > 移动开发 > IOS开发

iOS Push Notification注意事项

2015-10-14 10:30 288 查看
推送的原理是,iphone连着唯一的一条连接到apple的服务器,由apple的服务器连接到各种邮件、天气、qq、微博服务器。平时就靠apple的服务器与各服务器沟通,有新消息时,才告诉iphone。因此非常省流量,而且省电。iphone可以把所有的第三方进程kill掉,系统底层维持着与apple服务器的连接。而android必须保留进程才能接收信息。在推送之前很多智能系统只能通过轮询的方式不断定期向服务器询问是否有新信息,往往费电和费流量。

消息推送不支持群发,只能一个一个发.如果你的App有100万个用户,要发消息怎么办? 一个一个的发呗,发100万次.消息包大概包括两部分:标示用户手机的id(32个字节)+消息体(<=256Bytes),消息体是json字符串,传输过程用ssl加密

deviceToken生成之后不是永远不变化的,当重装系统后将发生变化,正因为token有可能改变,所以建议在app start的时候即,(didFinishLaunchingWithOptions)的时候调用registerForRemoteNotificationTypes,来检测deviceToken是否改变, 如果改变则传送给push服务器,token应该存在本地用来判断是否变化,最好的方法是你第一次获取到deviceToken之后,也提交,然后存在本地,之后每次都比较,发现有变化,就更新你的服务器上的记录,那么旧device在push服务器中的record怎么办,一般是发送给APNS
然后通过他的反馈消息来处理用户在device里删除app,调用registerForRemoteNotificationTypes后,成功注册后 APNS返回token,然后回调delegate的方法didRegisterForRemoteNotificationsWithDeviceToken如果注册失败则调用,didFailToRegisterForRemoteNotificationsWithError

注意点:在第一次调用registerForRemoteNotificationTypes,方法时候没有联网,则回调的delegate方法不回调用,在第一次调用registerForRemoteNotificationTypes,注册成功之后,之后即使没有联网,在调用registerForRemoteNotificationTypes,方法时候会把上一次的devicetoken作为最新的token,用户在第一次安装app的时候,是一定会向APNS发送手机注册消息,然后APNS
给出用户提示 是否本地接受推送,如果接受则在通知中的包括,不能推送 则在通知中心的不包括(只要设置了都会向本地发消息 接受与否在于本地设置)。此时如果卸载app重新安装的话,则用户不会再次收到推送本地判断。而默认是让用户可以接受本地可以接受推送消息,此时如果用户不想接受推送消息可以去通知中心设置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: