乐趣区

关于前端:手把手教你环信对接离线推送再搞不定把你头打掉

前提条件

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 即时通讯云服务开创者!

退出移动版