HarmonyOS NEXT如何高效接入融云IM即时通讯SDK?

新手上路,请多包涵
阅读 707
avatarAI BotBETA

HarmonyOS NEXT 接入融云IM即时通讯SDK的高效步骤如下:

一、前期准备

  1. 注册融云开发者账号

    • 前往融云官网注册开发者账号。
    • 注册成功后,在控制台创建应用,获取App Key和App Secret(用于SDK的初始化和后续的用户认证)。
  2. 开发环境配置

    • 安装DevEco Studio NEXT Developer Beta1 5.0.3.403或更高版本。
    • 确保手机系统版本为NEXT.0.0.26或更高。
    • 真机运行需要配置证书,详细步骤参考鸿蒙的签名指南文档。

二、SDK集成

  1. 安装融云IMLib SDK

    • 在DevEco Studio中,点击左侧边栏的Partner SDK。
    • 选择“社交”或“Social networking”,找到融云IMLib SDK,点击Install进行安装。
    • 安装成功后,SDK将位于项目根目录的oh_modules/.ohpm/中。
  2. 添加SDK依赖权限

    在模块的module.json5中配置以下权限:

    {
        module: {
            requestPermissions: [
                { name: "ohos.permission.GET_NETWORK_INFO" },
                { name: "ohos.permission.INTERNET" },
                { name: "ohos.permission.STORE_PERSISTENT_DATA" }
            ]
        }
    }

三、SDK初始化与配置

  1. 初始化融云SDK

    在UIAbility的onCreate()方法中,调用IMEngine的初始化方法,传入App Key。示例代码如下:

    let context = this.context;
    let initOption = new InitOption();
    let appKey = "从融云后台获取的appKey";
    IMEngine.getInstance().init(context, appKey, initOption);

其中,InitOption中可封装区域码、导航服务地址、统计服务地址和文件下载路径等初始化配置。

  1. 设置连接状态监听器

    监听IM连接状态的变化,以便在UI上给用户以提示。示例代码如下:

    IMEngine.getInstance().setConnectionStatusListener((status: ConnectionStatus) => {
        hilog.info(0x0000, 'IM-App', 'setConnectionStatusListener onChanged status:%{public}d', status);
    });

四、用户登录与消息处理

  1. 获取Token并连接服务器

    Token是与用户ID对应的身份验证令牌,是用户在融云的唯一身份标识。应用客户端需要通过应用的服务端调用IM Server API申请取得Token。然后,使用Token连接到融云服务器。示例代码如下:

    let token = "IMToken";
    let timeout = 5;
    IMEngine.getInstance().connect(token, timeout).then(result => {
        hilog.info(0x0000, 'IM-App', 'connect result :%{public}s', JSON.stringify(result));
    });
  2. 设置消息接收监听器

    设置消息接收监听器,用于接收所有类型的实时或离线消息。示例代码如下:

    IMEngine.getInstance().setMessageReceivedListener((message: Message, info: ReceivedInfo) => {
        // 处理接收到的消息
    });
  3. 发送消息

    创建消息并发送。示例代码如下:

    let conId = new ConversationIdentifier();
    conId.conversationType = ConversationType.Private;
    conId.targetId = "目标用户ID";
    
    let textMsg = new TextMessage();
    textMsg.content = "消息内容";
    
    let option: ISendMsgOption = {};
    let msg = new Message(conId, textMsg);
    
    IMEngine.getInstance().sendMessage(msg, option, (msg: Message) => {
        // 消息入库回调
    }).then(result => {
        // 消息发送结果
    });

通过以上步骤,HarmonyOS NEXT即可高效接入融云IM即时通讯SDK,实现即时通讯功能。

1 个回答
  1. 准备工作
    在融云官网注册账号并创建应用,获取应用的AppKey。
    下载融云IM的SDK并根据官方文档了解接入流程。
  2. 集成SDK
    (1) 添加SDK依赖
    在HarmonyOS Next项目中,通常需要将SDK的jar包或者aar包添加到项目的依赖中。

如果是jar包,通常将其放在libs目录下,并在项目的build.gradle文件中添加依赖。

dependencies {
    implementation files('libs/rongimlib.jar')
}

如果是aar包,需要在项目的build.gradle文件中添加flatDir仓库,并添加依赖。

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    implementation(name:'rongimlib', ext:'aar')
}

(2) 初始化SDK
在应用的合适位置(例如应用启动时)初始化融云IM SDK。

// 初始化融云IM SDK
RongIM.init(this, "你的AppKey");
(3) 配置权限
在config.json文件中配置必要的权限。


{
  "module": {
    "abilities": [
      {
        "name": ".MyAbility",
        "permissions": [
          "ohos.permission.INTERNET",
          "ohos.permission.READ_PHONE_STATE",
          "ohos.permission.WRITE_EXTERNAL_STORAGE",
          "ohos.permission.READ_EXTERNAL_STORAGE",
          // 其他可能需要的权限
        ]
      }
    ]
  }
}
  1. 使用SDK
    (1) 连接融云服务器

    RongIM.connect("用户Token", new RongIMClient.ConnectCallback() {
     @Override
     public void onSuccess(String userId) {
         // 连接成功
     }
    
     @Override
     public void onError(RongIMClient.ErrorCode errorCode) {
         // 连接失败
     }
    
     @Override
     public void onTokenIncorrect() {
         // Token不正确
     }
    });

    (2) 发送消息

    // 构造消息对象
    TextMessage content = TextMessage.obtain("Hello, HarmonyOS Next!");
    Message message = Message.obtain("接收者Id", Conversation.ConversationType.PRIVATE, content);
    
    // 发送消息
    RongIM.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() {
     @Override
     public void onAttached(Message message) {
         // 消息附加回调
     }
    
     @Override
     public void onSuccess(Message message) {
         // 消息发送成功
     }
    
     @Override
     public void onError(Message message, RongIMClient.ErrorCode errorCode) {
         // 消息发送失败
     }
    });

    (3) 接收消息

    RongIM.setOnReceiveMessageListener(new RongIMClient.OnReceiveMessageListener() {
     @Override
     public boolean onReceived(Message message, int left) {
         // 处理接收到的消息
         return false; // 返回false表示不拦截消息,返回true表示拦截消息
     }
    });
  2. 注意事项
  3. 确保你的应用遵守融云IM SDK的使用协议。
  4. 根据融云IM SDK的更新,可能需要调整接入方式。
  5. 考虑应用的安全性,妥善处理用户信息和Token。

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进