JMessage iOS SDK 集成指南
最近更新:2023-8-17
展开全部
JMessage iOS SDK 集成指南
集成说明
适用SDK版本
本文档适配 JMessage iOS SDK V3.0.0 及以后版本。 已集成之前版本的用户升级或已集成 JPush 的用户想同时集成IM,请参见下文的注意事项。
系统要求与开发环境
- JMessage iOS SDK 支持 iOS 7 以上系统版本。
集成步骤
1、在极光 Web控制台上创建应用
- 登录极光开发者控制台,在应用列表创建应用,进入“应用设置”中的“im设置”。完成上传证书和填写证书密码。
- 如果对 Apple APNs 证书不太了解,请参考iOS 证书设置指南。
- 创建应用后,可在此处查看该应用的 AppKey 。
2、SDK 导入
Cocoapods 导入
1.通过 Cocoapods 下载地址:
pod 'JCore', '4.2.8-jbasic' //使用jcore的jbasic版本(x.x.x-jbasic)
pod 'JMessage'
pod 'JCore', '4.2.8-jbasic' //使用jcore的jbasic版本(x.x.x-jbasic)
pod 'JMessage'
此代码块在浮窗中显示
2.如果需要安装指定版本则使用:
pod 'JCore', '4.2.8-jbasic' //使用jcore的jbasic版本(x.x.x-jbasic)
pod 'JMessage', '3.9.1'
pod 'JCore', '4.2.8-jbasic' //使用jcore的jbasic版本(x.x.x-jbasic)
pod 'JMessage', '3.9.1'
此代码块在浮窗中显示
若同时集成 推送/认证/分析,请使用 JCore 标准版本或者无 IDFA 版本。
- 标准版本: pod 'JCore', '4.2.8'
- 无 IDFA 版本: pod 'JCore', '4.2.8-noidfa'
使用Cocoapods导入SDK则可以跳过步骤3。
手动导入
在极光IM官网下载最新 SDK
- 把 JMessage.framework 文件加入到项目里。
- 把 JMessafe.framework 目录下的 jbasic-ios-x.x.x.xcframework(x.x.x 为 版本号) link 到工程中。
3、添加必要的框架
- CoreTelephony.framework
- CoreAudio.framework
- CoreGraphics.framework
- SystemConfiguration.framework
- CFNetwork.framework
- Security.framework
- AudioToolbox.framework
- MobileCoreServices.framework
- libz.dylib
- libsqlite3.0.dylib
- libresolv.tbd
4、Build Settings 配置
- 在项目配置,Build Settings,Other Linker Flags 里增加如下 1 项:
-ObjC
-ObjC
此代码块在浮窗中显示
5、初始化极光 IM SDK
在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法 :
# import "AppDelegate.h"
# import <JMessage/JMessage.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Required - 启动 JMessage SDK
[JMessage setupJMessage:launchOptions appKey:JMSSAGE_APPKEY channel:nil apsForProduction:NO category:nil];
// Required - 注册 APNs 通知
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
//可以添加自定义categories
[JMessage registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert)
categories:nil];
} else {
//categories 必须为nil
[JMessage registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert)
categories:nil];
}
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// Required - 注册token
[JMessage registerDeviceToken:deviceToken];
}
@end
# import "AppDelegate.h"
# import <JMessage/JMessage.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Required - 启动 JMessage SDK
[JMessage setupJMessage:launchOptions appKey:JMSSAGE_APPKEY channel:nil apsForProduction:NO category:nil];
// Required - 注册 APNs 通知
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
//可以添加自定义categories
[JMessage registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert)
categories:nil];
} else {
//categories 必须为nil
[JMessage registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert)
categories:nil];
}
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// Required - 注册token
[JMessage registerDeviceToken:deviceToken];
}
@end
此代码块在浮窗中显示
详细使用方法
详细使用可以参见SDK 开发指南或者查看下面提供的Demo。
注意事项
V3.0.0 之前版本用户升级
升级步骤如下:
- 使用新版本的 JMessage.framework 文件替换原工程下的同名旧文件。
- 将 JMessage.framework 里的 JBasic.xcframework link到工程里。
- 把原Apns注册和token上传的方法通过JMessage类的方法来实现,实现如下:
[JMessage registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];
[JMessage registerDeviceToken:deviceToken];
[JMessage registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];
[JMessage registerDeviceToken:deviceToken];
此代码块在浮窗中显示
监听连接状态通知名修改
JMessage iOS SDK V3.0.0 以下版本通过 Push 的通知来监听 SDK 的连接状态,现在已经更新为由JMessage 里提供,原通知名为:
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接
extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功
extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息
extern NSString *const kJPFServiceErrorNotification; // 错误提示
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接
extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功
extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息
extern NSString *const kJPFServiceErrorNotification; // 错误提示
此代码块在浮窗中显示
现在修改为:
extern NSString *const kJMSGNetworkIsConnectingNotification; // 正在连接中
extern NSString *const kJMSGNetworkDidSetupNotification; // 建立连接
extern NSString *const kJMSGNetworkDidCloseNotification; // 关闭连接
extern NSString *const kJMSGNetworkDidRegisterNotification; // 注册成功
extern NSString *const kJMSGNetworkFailedRegisterNotification; // 注册失败
extern NSString *const kJMSGNetworkDidLoginNotification; // 连接成功
extern NSString *const kJMSGNetworkDidReceiveMessageNotification; // 收到消息
extern NSString *const kJMSGServiceErrorNotification; // 错误提示
extern NSString *const kJMSGNetworkIsConnectingNotification; // 正在连接中
extern NSString *const kJMSGNetworkDidSetupNotification; // 建立连接
extern NSString *const kJMSGNetworkDidCloseNotification; // 关闭连接
extern NSString *const kJMSGNetworkDidRegisterNotification; // 注册成功
extern NSString *const kJMSGNetworkFailedRegisterNotification; // 注册失败
extern NSString *const kJMSGNetworkDidLoginNotification; // 连接成功
extern NSString *const kJMSGNetworkDidReceiveMessageNotification; // 收到消息
extern NSString *const kJMSGServiceErrorNotification; // 错误提示
此代码块在浮窗中显示
基于 JPush 集成 JMessage
JMessage iOS SDK V3.0.0 及以后版本不再包含 JPush 的功能,需要使用 JPush 的用户需要单独集成 JPush SDK,集成步骤参见JPush 集成指南
注意以下几点:
- 版本要求:支持 JPush V3.0.1 或以上版本,JCore 需 V1.1.0 或以上版本。
- JCore的替换:下载下来的JPush SDK zip包中同样包含了名为jcore-ios-x.x.x.a Lib,集成时需要注意项目中只保留一个 jcore,如果出现JPush和JMessage中所包含的 jcore 版本不一致的情况,则保留最新版本的jcore。
- 若同时集成 推送/认证/分析,只需要保留JCore包,不要添加JBasic包。
JMessage Demo
极光 IM 提供了一个完整的 IM 场景下的应用 JChat,它就是一个 IM App,供大家下载参考。 JChat iOS 项目源代码,开源放在 Github 上。下载的 SDK 压缩包里,也有 JChat 的源代码。
技术支持
邮件联系:[support@jiguang.cn][4]
文档内容是否对您有帮助?