注册

【集成攻略】手把手教你环信对接离线推送,再搞不定把你头打掉

前提条件

1.macOS系统,安装了xcode,并且配置好了cocoapods第三方管理工具

2.有苹果开发者账号

3.有环信开发者账号

(注册地址:https://console.easemob.com/user/register


在苹果开发者中心创建项目,注册推送证书.

1.登录苹果开发者中心.

https://developer.apple.com/

(请用自己的苹果开发者账号)





2.苹果开发者中心创建 - Identifiers.

(name - empushdemo )

(identifier - com.yyytp.empushdemo )











3.钥匙串 - 从证书颁发机构请求证书

(本机证书)
















4.针对刚创建的bundle id开通并注册Certificates push 证书

(注册 可以在开发和生产双环境下使用的推送证书)













5.安装证书到本机,并导出 push - p12 

(这里需要格外注意操作步骤!不能展开!!!要闭合的状态导出!!!)

(因为申领的证书是双环境的,所以导出的p12文件直接复制成双份即可)

(开发证书名称 : yyytp_empush_apns_dev)

(生产证书名称 : yyytp_empush_apns_pro)

(密码 : 不告诉你)




==========
提示:解决证书不受信任的问题

如果在《钥匙串访问》中出现"证书不受信任"的警告时,可以去苹果官方网站下载G4证书,并双击打开即可

“证书不受信任”的图片样例


苹果官方网站链接:

https://www.apple.com/certificateauthority/

苹果官方网站需要下载的G4证书截图说明:


苹果官方解释:
苹果全球开发者关系中级证书的版本将于2023年2月7日到期,续订版本将于2030年2月20日到期。更新后的版本用于签署2021 1月28日之后颁发的新软件签名证书。剩余服务证书将于2022年1月27日更新。
为苹果平台开发的苹果开发者计划和苹果开发者企业计划的成员需要下载更新的证书,并遵循以下说明。
苹果开发者企业计划的成员需要在所有使用2020年9月1日之后生成的企业iOS分发证书进行代码签名的机器上安装续订的证书。
对于2021 1月28日之后生成的所有软件签名证书,由在Xcode中拥有个人帐户的开发人员和iOS大学开发人员计划成员提供的,也需要进行此更新。
新的中间证书由Xcode 11.4.1或更高版本自动下载,可在证书颁发机构页面上下载。通过验证过期日期设置为2030,确认安装了正确的中间证书。

注:本解决方案来自简书平台的博主AndyLiYL
原文链接:
https://www.jianshu.com/p/2697ed4f6e41

==========


后续补充:导出时必须使用[英文+数字+下划线]字符集内字符.不能使用中文和其他特殊符号







以上是在苹果开发者中心做了两件事

1.创建了bundleid为com.yyytp.empushdemo的app

2.创建推送证书 apns-2.cer 并导出了 (.p12) 证书,复制为2份,分别命名为 yyytp_empush_apns_dev yyytp_empush_apns_pro 密码是 123456

其中两份p12证书内容是完全一样的,只是命名不同,都适用于开发和生产环境,不过为了后期导入环信后台时方便辨识


===========分割线===========================


在环信console后台创建一个appkey,顺带创建一个测试username


1.登录环信console后台:https://console.easemob.com/user/login




2.创建appkey

(app_name : showpushdemo )





3.创建一个测试账号

(测试账号 : emtest 密码 1 )







========分割线=======================


在环信console后台中上传推送证书(.p12文件)

注意!!!是在刚才创建的appkey(1168171101115760#showpushdemo)下创建证书!!!

(这里需要注意的细节是:证书名不能有中文和其他特殊符号!!! 建议 字母 + 下划线)

(所以我会采用 yyytp_empush_apns_dev / yyytp_empush_apns_pro 这样的命名方式)





最终效果




=========分割线=======================


在代码中实现

1.创建项目

em_push_showdemo

2.集成环信SDK

pod 'HyphenateChat' , '3.9.0'




3.配置项目





4.代码部分如下:





下面代码是AppDelegate.m的所有代码,可直接复制粘贴

下面代码是AppDelegate.m的所有代码,可直接复制粘贴

下面代码是AppDelegate.m的所有代码,可直接复制粘贴


//
// AppDelegate.m
// em_push_showdemo
//
// Created by flower on 2022/3/14.
//

#import "AppDelegate.h"
#import
#import

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
/*
1.注册环信SDK
2.注册推送
注册成功之后 绑定至环信SDK
3.登录账号
*/

[self _registerEMCHAT];
[self _registerSysPush];
[self _loginEMCHAT];
return YES;
}

- (void)_registerEMCHAT{
EMOptions *options = [EMOptions optionsWithAppkey:@"1168171101115760#showpushdemo"];
options.apnsCertName = @"yyytp_empush_apns_dev";
options.isAutoLogin = false;
options.usingHttpsOnly = true;
[EMClient.sharedClient initializeSDKWithOptions:options];
}

- (void)_registerSysPush{
[UNUserNotificationCenter.currentNotificationCenter
requestAuthorizationWithOptions:
UNAuthorizationOptionBadge|
UNAuthorizationOptionSound|
UNAuthorizationOptionAlert
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[UIApplication.sharedApplication registerForRemoteNotifications];
});
}
}];
}

- (void)_loginEMCHAT{
[EMClient.sharedClient loginWithUsername:@"emtest" password:@"1" completion:^(NSString *aUsername, EMError *aError) {
if (aError) {
NSLog(@"登录失败");
}else{
NSLog(@"登录成功");
//下面这个updatePushDisplayStyle是设置显示效果,有两种显示效果可以设置.详情可查看枚举值(EMPushDisplayStyleSimpleBanner)的定义
[EMClient.sharedClient.pushManager updatePushDisplayStyle:EMPushDisplayStyleSimpleBanner completion:^(EMError * _Nonnull aError) {
}];
}
}];
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
NSLog(@"绑定成功");
dispatch_async(dispatch_get_main_queue(), ^{
[EMClient.sharedClient bindDeviceToken:deviceToken];
});
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
}



@end


4.运行至手机,运行完成后,退出APP,发送消息测试推送.

7 个评论

写的真好,按照这个文章一步一步操作,真的集成好推送了,感谢
我觉得P8证书的方式更优雅
好耶,千呼万唤,终于来了
道理我都懂 但是为啥要把我头打掉?!
好好好
补充一下:5.安装证书到本机,并导出 push - p12 这个步骤,随后导出证书,一定要确保证书是有效的,如果不是绿色对勾,有效的样子,那么可能需要在电脑上安装什么证书,从百度上搜索一下关键字,找一个解决方法即可.大致是有一个苹果官方链接,点进去下载某证书,安装到电脑上,推送证书就有效了
https://www.jianshu.com/p/2697ed4f6e41

要回复文章请先登录注册