iOS 之消息推送(个推)---个人小结

时间:2024-02-17 15:13:24

前提:准备一台接收推送的设备(消息推送不支持模拟器)

步骤及问题排查:

1.参照开发文档,集成SDK ,这里就不一一介绍了.(注意,个推的ios推送只能使用透传)

2.创建证书.

       1》苹果的推送证书分为开发证书(测试用)和生产证书(上线用).这里需要注意的就是,创建证书时必须打开证书的push 服务,

      2》先创建开发证书,再去创建生产证书. 证书创建好了之后别忘了重新生成描述文件,检查一下描述文件是否开启了推送.

      3》证书创建好后,建议先到个推平台上测试一下证书是否正确,如果显示"测试可用",就说明没有问题;如果是其他,说明证书创建有问题,建议删除重新生成.

3.测试.

      测试有两种方式:个推平台跟公司后台提供的接口.  

 (1)个推平台测试如图:

 

      如果你接到了推送消息,那么good ,你已经接近成功了.

      如果没有

              1》首先你得检查一下该应用是否允许推送.(提醒样式应该选横幅)

             2》如果收到了推送的文本,但是没有收到推送的声音

                       A: 系统默认声音:检查一下你的音量设置,以及看一下是否开启了勿扰模式。

                       B: 自定义声音:检查本地音频的路径跟sound的路径是否一致; 音频的格式是否正确(支持.wav)    

    (2)公司后台测试

           找后台人员要接口。

           如果平台上推送成功,但是后台接口测试推送不成功的话,那就要问一下后台,是否集成了IOS的透传模板.(如果能接收到在线消息,离线消息接收不到的话,99.9%是因为后台的原因.我在开发的时候就出现了这个情况,后台以为android和IOS的方法是通用的,就只集成一个,结果android能正常接收到推送,ios不能.  这是因为离线还是走的苹果的APNS,在线的时候才走个推自己的流程,而后台并没有启动APNS服务,导致只能接收在线消息,离线消息接不到.)

4.处理接收到的推送

      应用在后台收到推送后会自动播放音频;进入前台后则不会播放音频,若想在前台也播放音频,只需在个推的 didReceiveRemoteNotification 方法中加入以下代码

  关于角标:

     [GeTuiSdk setBadge:_numb];

     [[UIApplication sharedApplication] setApplicationIconBadgeNumber:_numb];  //可用全局变量累加消息

     点击图标或者通知栏进入程序后,清空角标:

        [GeTuiSdk resetBadge];

        [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

        [[UIApplication sharedApplication] cancelAllLocalNotifications];

 提示音:可以使用系统自带的,也可播放音频      

   NSString *path = [[NSBundle mainBundle]pathForResource:@"sound" ofType:@"wav"];

    // 2 将路径字符串转换成url,从本地读取文件,需要使用fileURL

    NSURL *url = [NSURL fileURLWithPath:path];

    // 3 初始化音频播放器

    _player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];

    // 4 设置循环播放

    // 循环次数=0,声音会播放一次

    // 循环次数=1,声音会播放2次

    // 循环次数小于0,会无限循环播放

    [_player setNumberOfLoops:0];

    // 5 准备播放

    [_player prepareToPlay];

    [_player setVolume:0.9f];

    [_player play];

    停止播放

    [_player stop];

5. 发布.

       1》发布之前

             创建带推送的生产证书以及描述文件 --》在xcode中 更改描述文件(使用开启了推送功能的那个) --》在个推平台上将开发证书改成生产证书 --》打包上线.

       2》发布上线后

            如果测试的时候推送正常,上线成功之后发现推送不了,那么你得检查一下发布之后的版本deviceToken 是否生成了,如果没有,那么十有八九是你证书没有创建好,或者是打包的时候描述文件没有配置好.

           补充:上线之后的app,如何查看控制台打印的消息,-->先将手机连接电脑,打开xcode ,状态栏window->devices->选中你的手机,就可以查看日志里面有没有生成deviceToken了.

          注意:上线成功之后平台上的证书就不能随意更改啦,不然可能会影响线上用户的使用的.

6. 消息推送的流程

      1》、app注册APNS消息推送。
     2》、iOS从APNS Server获取并接收devicetoken。
     3》、app将device token发送给服务端。
     4》、服务端向APNS服务发送消息。
     5》、APNS服务将消息发送给app。

7. 个推消息推送的原理

     1》如果用户在线,个推应用内透传消息到个推SDK,将消息通知手机客户端;

     2》如果用户不在线,个推服务器将消息发送到苹果APNS服务器,然后APNS下发通知到手机客户端。