前提条件

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

2.有苹果开发者账号

3.有环信开发者账号

(注册地址:环信即时通讯云)

在苹果开发者核心创立我的项目,注册推送证书.

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

Apple Developer

(请用本人的苹果开发者账号)

编辑

编辑

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证书,并双击关上即可

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

编辑

苹果官方网站链接:

Apple PKI - Apple

苹果官方网站须要下载的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
原文链接:
iOS 推送证书 Apple Push Services:不受信赖的解决办法 - 简书

==========

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

编辑

编辑

编辑

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

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,发送音讯测试推送.

相干文档:

  • 注册环信:环信即时通讯云
  • 环信IM集成文档:产品概述 | 环信 IM 文档
  • IMGeek社区反对:环信开发者社区-为挪动开发者提供IM服务 - IM Geek开发者社区-挪动开发者社区-开源社区-IM Geek官网
  • 环信 Demo下载:  下载 - 即时通讯云 - 环信
  • 环信视频教程:视频列表 - IM Geek开发者社区-挪动开发者社区-开源社区-IM Geek官网
  • 环信官网:环信 - 中国IM即时通讯云服务开创者!