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

Posted 环信即时通讯云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IM集成攻略手把手教你环信对接离线推送,再搞不定把你头打掉相关的知识,希望对你有一定的参考价值。

前提条件

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

2.有苹果开发者账号

3.有环信开发者账号

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

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

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)

(密码 : 不告诉你)

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

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集成攻略手把手教你环信对接离线推送,再搞不定把你头打掉的主要内容,如果未能解决你的问题,请参考以下文章

环信 flutter sdk集成IM离线推送及点击推送获取推送信息(iOS版)

环信IM集成教程iOS端收到离线消息显示设置

从零开始,对接环信IM iOS SDK(无UI界面)实现登录与发送消息

快速上手教程PC WebUni-App小程序集成环信IM都在这里了

Android消息推送:手把手教你集成小米推送

iOS环信离线推送