iOS首页投稿(暂停使用,暂停投稿)iOS进阶指南

信鸽推送集成

2016-09-16  本文已影响1689人  小北风sky

信鸽推送集成

iOS远端推送原理

  1. 服务端把要发送的消息和目标iOS设备的DeviceToken打包,发送给APNS;DeviceToken不是一成不变的
  2. APNS在自身的已注册Push服务的IOS设备列表中,根据DeviceToken查找对应iOS设备,并将消息发送到IOS设备
  3. iOS设备把发送的消息传递给对应的应用程序。

iOS推送证书设置

  1. 再需要设置信鸽推送的Demo上,先用开发者账号去运行,将Demo在模拟机上运行一遍。这样可以在apple developer -> acconut 中直接查找到项目的App ID.


  2. 运行过后刷新apple developer -> account -> Certificates...


  3. 找到后,由于未添加push notification 所以选项都为disable 点击edit进行更改。


  4. 创建推送证书,接下来会需要导入Certificate Signing Request。


  5. 生成 .certSigningRequest文件,然后导入到 4 中。


  6. 5 中上传完成的后的效果图。


  7. 推送证书生成完毕,点击下载。


  8. 下载后如图所示,双击进行安装


  9. 推送证书安装完毕后的效果。


Provisioning Profiles (配置概要文件)

  1. 如图所示,添加新profile


  2. 选中ios App Developer

    Development(开发状态下) Distribution(生产状态下)


  3. 选择需要进行推送的应用的Bundle id


  4. 按照图示进行选中。


  5. 选中需要推送的设备


  6. 给描述文件命名。


  7. 下载用于推送的描述文件。


腾讯信鸽平台设置

  1. 登录信鸽平台。选中接入推送应用


  2. 填写需要设置推送的应用的信息


  3. 进行该应用的信鸽平台的配置


  4. 需要进行设置的2项:开发证书和测试设备


  5. 再次打开钥匙串。选中Push证书导出,选中一行。导出的格式为p12。

  6. 打开终端,进入到p12文件所在执行以下命令

    openssl pkcs12 -in Name.p12 -out Name.pem -nodes
    
  7. 将生成的CertificateName.pem证书,上传到信鸽配置信息 -> iOS证书配置 -> 开发证书。 进行 pem 证书上传验证。

Xcode设置

  1. 双击 .mobileprovision 文件,进行安装。

  2. 设置Provisioning Profile

代码实现

  1. 在信鸽平台下载Demo后,将XGSetting.h 和 XGPush.h 和 libXG-SDK.a添加到Xcode工程

  2. 添加对以下libraries的引用。包括CFNetwork.framework , SystemConfiguration.framework , CoreTelephony.framework , libz.dylib , libXG-SDK.a,Security.framework。

  3. 初始化push信息

    注册用户

    // 设置账号
    [XGPush setAccount:@"zhoujian"];
    
  4. 获取deviceToken,拷贝至信鸽平台 接入配置 -> 测试设备 -> 新增设备

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
        [XGPush registerDevice:deviceToken];//信鸽获取Token
        NSLog(@"远程推送能力注册成功,deviceToken:%@",deviceToken);
    }
    
  5. 信鸽平台 -> 创建通知

    • 注意:推送环境和用户范围设置好,注意是当前应用设置的是开发环境还是生产环境。
  6. 输入测试内容,点击确认推送,手机端就可以收到推送的信息。

设置点击推送栏跳转至指定页面

  1. 点击通知操作使用自定义参数

  2. 收到远程推送消息时调用

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    //推送
   NSLog(@"推送内容是:%@",userInfo);
}

得到userInfo字典

    推送内容是:{
    aps =     {
        alert = "\U6d4b\U8bd5";
        sound = default;
    };
    info = 333;
    xg =     {
        bid = 0;
        ts = 1472197503;
    };
}

故可以设置通知,当 info 有值时候,发送通知给指定页面,执行相应的跳转事件。

设置APP 通知未读角标

  1. 信鸽平台 -> 创建通知

  2. 在 useInfo 中

    //设置APP的bageValue
    NSString *bageValue = [[userInfo objectForKey:@"aps"] objectForKey:@"bageValue"];
    
    int i = [bageValue intValue];
    
    [UIApplication sharedApplication].applicationIconBadgeNumber = i;
    

判断应用处于前台 or 后台

//处于前台
[UIApplication sharedApplication].applicationState == UIApplicationStateActive

//处于后台
[UIApplication sharedApplication].applicationState == UIApplicationStateBackground
上一篇下一篇

猜你喜欢

热点阅读