• 远程推送


    实现原理

    服务端推送消息----》苹果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

       

  • 相关阅读:
    本周工作量统计
    第15周个人作业
    16周第一组作业
    排球比赛积分规则
    典型用户和场景
    我和计算机
    第18周冲刺
    16周个人作业
    Java中动态获取项目根目录的绝对路径
    Spring框架下类的初始化顺序
  • 原文地址:https://www.cnblogs.com/ly1973/p/8848404.html
Copyright © 2020-2023  润新知