美文网首页iOS开发
iOS融云集成之推送设置

iOS融云集成之推送设置

作者: ProgrammerChan | 来源:发表于2017-08-17 11:34 被阅读1561次

在集成使用融云完成之后,最后一部分就是设置推送消息。设置推送总的来说分为4步。
1.创建证书(IOS Developer创建)
2.上传证书(上传到融云后台)
3.代码设置
4.测试

一:创建证书

1.打开Apple Developer,然后点击certificaties,identifiers....

91883A80-4B57-41D7-8A54-2B1D450CC4E7.png

2.点击左侧App IDs后,在点击右边加号创建



3.在打开的创建页面填写相关信息,App Services下面要勾选Push Notifications允许推送,勾选后点击register。就创建成功了。


18433048-DEB5-4EEF-9CEA-C7D08FDCCFE6.png
4.回到APP IDs界面,点击刚刚创建好的Identifier,你会发现push notifications上面都是黄色的configurable的状态,意思是还需要配置的意思。点击下方的edit进行证书的配置。
41B0A439-425C-43B1-838A-AA3EE80D2745.png
5.一个是开发的时候的证书,一个是生产时候的证书,其实就是测试和上线的区别。以创建development SSL Certificate为例,下面这个是一样的操作。
4D50ED34-2A54-4E05-9186-15C32BE26E9C.png

6.这些英文就是教你怎么创建证书的,直接点continue


C4B1B1A2-0111-4929-9578-0B0D6B4EC6D3.png
7.这时候会让你choose file,意思就是让你上传一个空的证书来上面生成。如果制作一个空的证书,如下。
<1>.打开mac的钥匙串访问
<2>.跟着图点一下
F2D96DB9-D9A6-4535-9DEA-F5871BF2C5D7.png
<3>.然后在点.上面的信息都是随便填的。填完了过后点击继续,保存在磁盘上的随便某个位置,便于后面找的到。 6FF41F29-0D2C-4758-AAAA-4A371BBC8B99.png

8.然后在第七步后的choose file选择刚刚生成的证书,这样就算做好了,创建完了之后会有一个download,你点击下载到本地,然后双击它,它会自动的添加到你的钥匙串里面。
再按照这个步骤可以吧生产环境的推送证书也做好。

二:上传证书

刚刚创建好的证书下载好之后双击打开都会被放在钥匙串里面,这时候需要导出他们为.p12的证书,然后再上传到融云后台。
1.导出证书。

ECC1AFD8-11D5-4728-9A5C-84DBA71C0ECF.png

点击后输入名字,注意选择证书类型,在点击存储后为让你设置证书密码,可以设置也可以不设置,然后存储到本地。

3D05958E-7A8B-4603-B898-125B71BAB5A8.png

这样导出完成。
2.打开融云后台控制台,打开如下图

1D36BDB4-348F-4401-A4E1-51B072B98E36.png

上传刚刚导出的.p12证书,如果导出的时候有密码就输入密码,没有就不填,然后点击保存设置,他会提示你是否设置成功,设置成功2小时后会生效,你可以等2小时后测试。

三:代码设置

打开工程,在appdelegate的.m文件里面一次设置如下代码

    if ([application
         respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        //注册推送, 用于iOS8以及iOS8之后的系统
        UIUserNotificationSettings *settings = [UIUserNotificationSettings
                                                settingsForTypes:(UIUserNotificationTypeBadge |
                                                                  UIUserNotificationTypeSound |
                                                                  UIUserNotificationTypeAlert)
                                                categories:nil];
        [application registerUserNotificationSettings:settings];
    } else {
        //注册推送,用于iOS8之前的系统
        UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge |
        UIRemoteNotificationTypeAlert |
        UIRemoteNotificationTypeSound;
        [application registerForRemoteNotificationTypes:myTypes];
    }

/**
 * 推送处理2
//注册用户通知设置
- (void)application:(UIApplication *)application
didRegisterUserNotificationSettings:
(UIUserNotificationSettings *)notificationSettings {
    // register to receive notifications
    [application registerForRemoteNotifications];
}

/**
 * 推送处理3
 */
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *token =
    [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<"
                                                           withString:@""]
      stringByReplacingOccurrencesOfString:@">"
      withString:@""]
     stringByReplacingOccurrencesOfString:@" "
     withString:@""];
    
    [[RCIMClient sharedRCIMClient] setDeviceToken:token];
}

需要注意的是,在工程里面需要打开推送开关


935FB218-0725-48D3-AE83-EFC463363F11.png

这样设置好2小时后就能真机测试了。

四:测试

可在融云后台测试推送,第一个地方是刚刚上传推送证书哪里有一个推送,还有一个后台有一个广播与推送也可以测试的。

如果2小时后测试推送没有效果,官方给了出排查故障文档
推送收不到,请参照文档一一排查:http://support.rongcloud.cn/kb/MzEy;

我们App有3种状态,分别是前台状态,后台活动状态和后台暂停状态。对于这三种状态,处理各不相同。

前台状态:顾名思义就是程序在前台可见,这时候如果收到新消息,会有铃声提示,没有通知栏。

后台活动状态:程序进入到后台后,我们设置了一个2分钟计时器。在超时之前都是活动状态,这时如果有人发消息,应用能够收到消息,这时会在通知栏通知,这种状态叫做本地通知。

后台暂停状态:计时器超时后,融云会断开服务器,进入到暂停状态。这时候如果有人给该用户发消息,是会走苹果的远程push的,会在通知栏显示通知。程序重新进入到前台状态后才会收下来消息。

···
远程推送内容的获取

点击通知栏的远程推送时,如果此时 App 已经被系统冻结,则您在 AppDelegate 的 -application:didFinishLaunchingWithOptions: 中可以捕获该消息。

// AppDelegate class

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 远程推送的内容
    NSDictionary *remoteNotificationUserInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

    ...

    return YES;
}

如果 App 未被系统冻结,则您在 AppDelegate 的 -application:didReceiveRemoteNotification: 中可以捕获该消息。

// AppDelegate class

- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo {
    // userInfo为远程推送的内容
}

···

相关文章

  • iOS融云集成之推送设置

    在集成使用融云完成之后,最后一部分就是设置推送消息。设置推送总的来说分为4步。1.创建证书(IOS Develop...

  • iOS开发如何测试生产环境的远程推送功能

    极光推送&融云消息推送 首先说一下我们项目用的是极光推送,还有一个集成融云即时通讯自带的融云推送。 在Debug模...

  • iOS-iOS10极光推送的使用

    1、首先先配置好推送证书,传到极光。极光推送->iOS证书设置指南极光推送->iOS SDK集成指南(XCode8...

  • iOS-极光推送的使用

    1、首先先配置好推送证书,传到极光。极光推送->iOS证书设置指南极光推送->iOS SDK集成指南(XCode8...

  • 极光推送集成开发

    1.极光推送集成与设置 极光推送地址①注册极光推送账号。②在应用管理内按照步骤创建APP。③找到“文档——iOS—...

  • 融云集成相关

    基于 融云demo研究 https://github.com/sealtalk/sealtalk-ios 集成 @...

  • iOS 友盟推送--关键点/核心点

    |:-| totem iOS集成友盟推送 1.iOS集成“友盟推送”后,友盟服务响应的deviceToken = ...

  • iOS 融云远程推送

    融云远程推送点击一直闪退,找不到原因,因为程序刚启动是获取当前控制器的方法返回的控制器是nil,融云也没有初始化,...

  • iOS开发之融云IM集成

    首先去融云开发者注册一波账号,获取AppKey : 然后拉取融云SDK: 然后pod install,会发现SDK...

  • 极光推送 集成 使用 Token Authentication

    iOS 设备集成推送,以前需要集成开发证书和生产证书,比较麻烦,现在极光推送集成了Token Authentica...

网友评论

  • 硅谷小虾米:应用被杀死或者进入后台之后的推送是不是项目必须创建provisioning profile文件才可以??
    ProgrammerChan:@硅谷小虾米 对
  • AliceJordan:为什么我的推送总是‘’该远程推送不包含来自融云的推送服务‘’
    收不到推送消息啊。。。:scream:

本文标题:iOS融云集成之推送设置

本文链接:https://www.haomeiwen.com/subject/jrygrxtx.html