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

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

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

4.回到APP IDs界面,点击刚刚创建好的Identifier,你会发现push notifications上面都是黄色的configurable的状态,意思是还需要配置的意思。点击下方的edit进行证书的配置。

5.一个是开发的时候的证书,一个是生产时候的证书,其实就是测试和上线的区别。以创建development SSL Certificate为例,下面这个是一样的操作。

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

7.这时候会让你choose file,意思就是让你上传一个空的证书来上面生成。如果制作一个空的证书,如下。
<1>.打开mac的钥匙串访问
<2>.跟着图点一下

<3>.然后在点.上面的信息都是随便填的。填完了过后点击继续,保存在磁盘上的随便某个位置,便于后面找的到。

8.然后在第七步后的choose file选择刚刚生成的证书,这样就算做好了,创建完了之后会有一个download,你点击下载到本地,然后双击它,它会自动的添加到你的钥匙串里面。
再按照这个步骤可以吧生产环境的推送证书也做好。
二:上传证书
刚刚创建好的证书下载好之后双击打开都会被放在钥匙串里面,这时候需要导出他们为.p12的证书,然后再上传到融云后台。
1.导出证书。

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

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

上传刚刚导出的.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];
}
需要注意的是,在工程里面需要打开推送开关

这样设置好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为远程推送的内容
}
···
网友评论
收不到推送消息啊。。。