• iOS SDK 集成指南
    • 集成说明
      • 适用SDK版本
      • 系统要求与开发环境
    • 集成步骤
      • 1、在极光 Web控制台上创建应用
      • 2、SDK 导入
        • Cocoapods 导入
        • 手动导入
      • 3、添加必要的框架
      • 4、Build Settings 配置
      • 5、初始化极光 IM SDK
      • 详细使用方法
    • 注意事项
      • V3.0.0 之前版本用户升级
      • 监听连接状态通知名修改
      • 基于 JPush 集成 JMessage
    • JMessage Demo
    • 技术支持

    iOS SDK 集成指南

    集成说明

    适用SDK版本

    本文档适配 JMessage iOS SDK V3.0.0 及以后版本。已集成之前版本的用户升级或已集成 JPush 的用户想同时集成IM,请参见下文的注意事项。

    系统要求与开发环境

    • JMessage iOS SDK 支持 iOS 7 以上系统版本。

    集成步骤

    1、在极光 Web控制台上创建应用

    • 登录极光Web控制台,创建应用,上传 APNs 证书。如果对 Apple APNs 证书不太了解,请参考iOS 证书设置指南。
      jmessage_ios

    • 创建成功后自动生成 AppKey 用以标识该应用。这个后续要用到。
      jmessage_ios

    2、SDK 导入

    Cocoapods 导入

    通过 Cocoapods 下载地址:

    1. pod 'JMessage'

    如果需要安装指定版本则使用:

    1. pod 'JMessage', :head

    使用用Cocoapods导入SDK则可以跳过步骤3.

    手动导入

    在极光IM官网下载最新SDK

    • 把 JMessage.framework 文件加入到项目里。
    • 把 JMessafe.framework 目录下的 jcore-ios-x.x.x.a(x.x.x 为jcore 版本号) 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 项:
    1. -ObjC

    5、初始化极光 IM SDK

    在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法 :

    1. #import "AppDelegate.h"
    2. #import <JMessage/JMessage.h>
    3. @implementation AppDelegate
    4. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    5. // Required - 启动 JMessage SDK
    6. [JMessage setupJMessage:launchOptions appKey:JMSSAGE_APPKEY channel:nil apsForProduction:NO category:nil];
    7. // Required - 注册 APNs 通知
    8. if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
    9. //可以添加自定义categories
    10. [JMessage registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
    11. UIUserNotificationTypeSound |
    12. UIUserNotificationTypeAlert)
    13. categories:nil];
    14. } else {
    15. //categories 必须为nil
    16. [JMessage registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
    17. UIRemoteNotificationTypeSound |
    18. UIRemoteNotificationTypeAlert)
    19. categories:nil];
    20. }
    21. return YES;
    22. }
    23. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    24. // Required - 注册token
    25. [JMessage registerDeviceToken:deviceToken];
    26. }
    27. @end

    详细使用方法

    详细使用可以参见SDK 开发指南或者查看下面提供的Demo。

    注意事项

    V3.0.0 之前版本用户升级

    升级步骤如下:

    • 使用新版本的 JMessage.framework 文件替换原工程下的同名旧文件。
    • 将 JMessage.framework 里的 JCore.a link到工程里。
    • 把原Apns注册和token上传的方法通过JMessage类的方法来实现,实现如下:
    1. [JMessage registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];
    2. [JMessage registerDeviceToken:deviceToken];

    监听连接状态通知名修改

    JMessage iOS SDK V3.0.0 以下版本通过 Push 的通知来监听 SDK 的连接状态,现在已经更新为由JMessage 里提供,原通知名为:

    1. extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
    2. extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
    3. extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接
    4. extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功
    5. extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
    6. extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
    7. extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息
    8. extern NSString *const kJPFServiceErrorNotification; // 错误提示

    现在修改为:

    1. extern NSString *const kJMSGNetworkIsConnectingNotification; // 正在连接中
    2. extern NSString *const kJMSGNetworkDidSetupNotification; // 建立连接
    3. extern NSString *const kJMSGNetworkDidCloseNotification; // 关闭连接
    4. extern NSString *const kJMSGNetworkDidRegisterNotification; // 注册成功
    5. extern NSString *const kJMSGNetworkFailedRegisterNotification; // 注册失败
    6. extern NSString *const kJMSGNetworkDidLoginNotification; // 连接成功
    7. extern NSString *const kJMSGNetworkDidReceiveMessageNotification; // 收到消息
    8. 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。

    JMessage Demo

    极光 IM 提供了一个完整的 IM 场景下的应用 JChat,它就是一个 IM App,供大家下载参考。JChat iOS 项目源代码,开源放在 Github 上。下载的 SDK 压缩包里,也有 JChat 的源代码。

    技术支持

    邮件联系:support@jiguang.cn