远程推送

 

 

实现原理

 

服务端推送消息----》苹果ANPs-----》苹果设备

实现逻辑

1 当前应用上传deviceToken 给本地服务器

2 本地服务器 苹果ANPs发送消息 做推送

 

如果直接用自己的服务器做推送,当客户端没有登录,手机app没有连接服务器情况下,则是没有办法推送的

苹果APNs 推送,手机app 有否登录,或是有否打开app,都可以直接做推送

 

客户端设置

一  注册当前app推送(告诉苹果老子的app是可以接受推送的)

  // 注册远程通知服务(第一次注册服务的时候会弹出提醒框,让用户授权)

    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];

 

二 获取deviceToken发送给本地服务器

1 DeviceToken内标识了 uuid + appid(bundleId)因为服务器可以根据它准确推送给 某个手机的 某个应用

2 不是每个app 都可以接收推送消息的,需要先在电脑上配置推送证书,这样方法才会调用获取deviceToken

    配置推送证书如下 1

    1 苹果开发者 生成developer cer证书(平时开发用),distribution cer证书 (上线发布用)

   生成证书需要标识到 哪个电脑+哪个个手机+哪个应用 所以需要上传 appid +uuid +电脑证书 来获取推送证书

 

3 将deviceToken 发送给服务器

调用本地服务器接口,传递当前设备deviceToken,以便服务器保存

服务器需要建立本地数据库,记录所有用户 uid <==> imid <==> deviceToken,以便日后群发推送消息,im消息推消息

 

三:实操 点击推送跳转制定界面

情况1 当前应用没有打开/进程被杀死时(都尼玛没打开应用啥方法也不会调用的,只能重新打开应用,肯定走didFinishLunch)

1 程序开启,调用didFinishLunch方法,获取字典信息,通过remoteNotificationKey获取字典消息,

2 判断字典消息是否有值,如果有则当前操作为,当进程杀死,点击推送信息界面进入的应用。

3 根据解析的字典userInfo信息,调到相关的制定界面

 

 2 当进程没有退出,而是在后台挂起.

1 则会调用 didReviceRemoteNotification:(NSDictionary)*userInfo

2 解析userInfo信息 跳转到相关指定界面

 

 四 :模拟本地服务器 发消息给苹果APNs

服务器 需要传递苹果

1 deviceToken

2 消息体(推送的啥消息 格式标准 {apns:****})

3 推送证书(前端给的)

苹果规定,后台发送消息的格式

 

以json方式发送 上面的apns部分json 不能改变 ,下面的userInfo自定义 ,注意budgeVule 为1 app红色下标为1

 

JPush 介绍

什么是JPush
一套远程推送解决方案,支持android和iOS两个平台
它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量、开发复杂度
 
更多的信息,可以参考JPush官方网站:https://www.jpush.cn
 
集成iOS SDK的步骤可以参考

 

juspush集成步骤

1 注册帐号,创建应用

 

2 填写iOS App的必要信息

 

3 iOS开发证书和iOS生产证书必须是p12格式的交换证书

 

4  JPush会自动记录和管理所有安装过此app的设备deviceToken

   利用JPush,可以轻易地给所有设备发送远程推送通知

 

关于badge问题 下标红色提示

程序运行在前台

原则上,应用在收到推送消息时,badge的值是由后台来控制的,但是,目前的大多数公司后端都不会实现这一功能。幸运的是,JPush服务器已经帮我们做了。

我们在JPush后台发布消息时,在可选设置中,设置badge的值为:+1,就可以让app端badge的值自动加1,这样,我们在app端用代码修改badge的值的时候,都需要同时用[APService setBadge:badgeNumber]修改Push后台记录的badge值,这样下次app收到推送消息时,显示的badge才是正确的。

如果要求对于程序在前台运行时,收到的通知也做处理,这时,我们可以将收到的远程推送通知,转换为本地推送通知,同时修改badge值,就可以了。

链接:https://www.jianshu.com/p/b519ee2c17a4

   

posted @ 2018-04-15 17:33  看谷秀  阅读(600)  评论(0编辑  收藏  举报