• 跨应用通信
    • 概述
      • 跨应用用户管理
        • 获取用户信息
        • 免打扰设置
        • 黑名单设置
          • 添加
          • 删除
      • 跨应用群组管理
        • 群成员管理
          • 添加
          • 删除
        • 管理员管理
          • 添加
          • 删除
        • 黑名单管理
          • 添加
          • 删除
      • 跨应用消息管理
        • 发送跨应用单聊文本消息
        • 发送跨应用单聊图片消息
        • 发送跨应用单聊语音消息
        • 发送跨应用单聊文件消息
        • 发送跨应用单聊位置消息
    • 跨应用会话管理
      • 获取跨应用单聊会话
      • 创建跨应用单聊会话
      • 删除跨应用单聊会话

    跨应用通信

    概述

    跨应用通信是指允许同一开发者账号下的不同应用能互相通信,以满足开发者对于不同 appKey 下应用通信的需求。

    跨应用接口与非跨应用接口区别主要在于:跨应用接口增加了appkey作为参数。只要接口中需要传appkey作为参数的,均可以支持跨应用通信,详细接口说明请前往极光IM iOS API docs。这里仅列举一些常用的跨应用接口和实现。

    跨应用用户管理

    获取用户信息

    通过指定appKey可以实现获取跨应用用户信息。

    1. /*!
    2. * @abstract 批量获取用户信息
    3. *
    4. * @param usernameArray 用户名列表。NSArray 里的数据类型为 NSString
    5. * @param userAppKey 用户所在 AppKey
    6. * @param handler 结果回调。正常返回时 resultObject 的类型为 NSArray,数组里的数据类型为 JMSGUser
    7. *
    8. * @discussion 这是一个批量接口。
    9. */
    10. + (void)userInfoArrayWithUsernameArray:(NSArray JMSG_GENERIC(__kindof NSString *)*)usernameArray
    11. appKey:( NSString *JMSG_NULLABLE)userAppKey
    12. completionHandler:(JMSGCompletionHandler)handler;

    免打扰设置

    1. /*!
    2. * @abstract 设置用户免打扰(支持跨应用设置)
    3. *
    4. * @param isNoDisturb 是否全局免打扰 YES:是 NO: 否
    5. * @param handler 结果回调。回调参数: error 为 nil, 表示设置成功
    6. *
    7. * @discussion 针对单个用户设置免打扰,这个接口支持跨应用设置免打扰
    8. */
    9. - (void)setIsNoDisturb:(BOOL)isNoDisturb handler:(JMSGCompletionHandler)handler;

    黑名单设置

    添加
    1. /*!
    2. * @abstract 跨应用添加黑名单
    3. * @param usernameArray 作用对象的username数组
    4. * @param userAppKey 应用的appKey
    5. * @param handler 结果回调。回调参数:error 为 nil, 表示设置成功
    6. *
    7. * @discussion 可以一次添加多个用户
    8. */
    9. + (void)addUsersToBlacklist:(NSArray JMSG_GENERIC(__kindof NSString *)*)usernameArray
    10. appKey:(NSString *)userAppKey
    11. completionHandler:(JMSGCompletionHandler)handler;
    删除
    1. /*!
    2. * @abstract 跨应用删除黑名单
    3. * @param usernameArray 作用对象的username数组
    4. * @param userAppKey 应用的appKey
    5. * @param handler 结果回调。回调参数:error 为 nil, 表示设置成功
    6. *
    7. * @discussion 可以一次删除多个黑名单用户
    8. */
    9. + (void)delUsersFromBlacklist:(NSArray JMSG_GENERIC(__kindof NSString *)*)usernameArray
    10. appKey:(NSString *)userAppKey
    11. completionHandler:(JMSGCompletionHandler)handler;

    跨应用群组管理

    实现跨应用群聊的关键在于群组中加入跨应用的群成员,而创建会话和发送消息的流程和普通的群聊实现方式一致。这里只列举部分常用的跨应用接口

    群成员管理

    添加
    1. /*!
    2. * @abstract 添加群组成员
    3. *
    4. * @param usernameArray 用户名数组。数组里的成员类型是 NSString
    5. * @param userAppKey 用户的 AppKey,这批添加的成员必须在同一个 AppKey 下的用户
    6. * @param reason 邀请原因,可选
    7. *
    8. * @param handler 结果回调。正常返回时 resultObject 为 nil.
    9. */
    10. - (void)addMembersWithUsernameArray:(NSArray JMSG_GENERIC(__kindof NSString *) *)usernameArray
    11. appKey:(NSString *JMSG_NULLABLE)userAppKey
    12. reason:(NSString *JMSG_NULLABLE)reason
    13. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;
    删除
    1. /*!
    2. * @abstract 删除群组跨应用成员
    3. *
    4. * @param usernameArray 用户名数据. 数组里的成员类型是 NSString
    5. * @param handler 结果回调。正常返回时 resultObject 为 nil.
    6. */
    7. - (void)removeMembersWithUsernameArray:(NSArray JMSG_GENERIC(__kindof NSString *) *)usernameArray
    8. appKey:(NSString *)userAppKey
    9. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

    管理员管理

    添加
    1. /*!
    2. * @abstract 添加管理员
    3. *
    4. * @param username 用户名
    5. * @param appkey 用户 AppKey,不填则默认为本应用 AppKey
    6. * @param handler 结果回调。error 为 nil 表示成功.
    7. *
    8. * @discussion 注意:非 VIP 应用最多设置 15 个管理员,不包括群主本身
    9. */
    10. - (void)addGroupAdminWithUsernames:(NSArray <__kindof NSString *>*)usernames
    11. appKey:(NSString *JMSG_NULLABLE)appkey
    12. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;
    删除
    1. /*!
    2. * @abstract 删除管理员
    3. *
    4. * @param username 用户名
    5. * @param appkey 用户 AppKey,不填则默认为本应用 AppKey
    6. * @param handler 结果回调。error 为 nil 表示成功.
    7. */
    8. - (void)deleteGroupAdminWithUsernames:(NSArray <__kindof NSString *>*)usernames
    9. appKey:(NSString *JMSG_NULLABLE)appkey
    10. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

    黑名单管理

    添加
    1. /*!
    2. * @abstract 添加群黑名单
    3. *
    4. * @param usernames 用户名列表
    5. * @param appkey 用户 appKey,usernames 中的所有用户必须在同一个 AppKey 下,不填则默认为本应用 appKey
    6. * @param handler 结果回调。error 为 nil 表示成功.
    7. *
    8. * @discussion 黑名单上限100个,超出将无法设置成功,被拉入黑名单用户会被主动踢出群组,且无法再次加入.
    9. * @since 3.8.0
    10. */
    11. - (void)addGroupBlacklistWithUsernames:(NSArray <__kindof NSString *>*)usernames
    12. appKey:(NSString *JMSG_NULLABLE)appKey
    13. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;
    删除
    1. /*!
    2. * @abstract 删除群黑名单
    3. *
    4. * @param usernames 用户名列表
    5. * @param appkey 用户 appKey,usernames 中的所有用户必须在同一个 AppKey 下,不填则默认为本应用 appKey
    6. * @param handler 结果回调。error 为 nil 表示成功.
    7. *
    8. * @since 3.8.0
    9. */
    10. - (void)deleteGroupBlacklistWithUsernames:(NSArray <__kindof NSString *>*)usernames
    11. appKey:(NSString *JMSG_NULLABLE)appKey
    12. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

    跨应用消息管理

    发送跨应用单聊文本消息
    1. /*!
    2. * @abstract 发送跨应用单聊文本消息
    3. *
    4. * @param text 文本内容
    5. * @param username 单聊对象 username
    6. *
    7. * @discussion 快捷方法,不需要先创建消息而直接发送。
    8. */
    9. + (void)sendSingleTextMessage:(NSString *)text
    10. toUser:(NSString *)username
    11. appKey:(NSString *)userAppKey;
    发送跨应用单聊图片消息
    1. /*!
    2. * @abstract 发送跨应用单聊图片消息
    3. *
    4. * @param imageData 图片数据
    5. * @param username 单聊对象 username
    6. *
    7. * @discussion 快捷方法,不需要先创建消息而直接发送。
    8. */
    9. + (void)sendSingleImageMessage:(NSData *)imageData
    10. toUser:(NSString *)username
    11. appKey:(NSString *)userAppKey;
    发送跨应用单聊语音消息
    1. /*!
    2. * @abstract 发送跨应用单聊语音消息
    3. *
    4. * @param voiceData 语音数据
    5. * @param duration 语音时长
    6. * @param username 单聊对象 username
    7. *
    8. * @discussion 快捷方法,不需要先创建消息而直接发送。
    9. */
    10. + (void)sendSingleVoiceMessage:(NSData *)voiceData
    11. voiceDuration:(NSNumber *)duration
    12. toUser:(NSString *)username
    13. appKey:(NSString *)userAppKey;
    发送跨应用单聊文件消息
    1. /*!
    2. * @abstract 发送跨应用单聊文件消息
    3. *
    4. * @param fileData 文件数据数据
    5. * @param fileName 文件名
    6. * @param username 单聊对象 username
    7. *
    8. * @discussion 快捷方法,不需要先创建消息而直接发送。
    9. */
    10. + (void)sendSingleFileMessage:(NSData *)fileData
    11. fileName:(NSString *)fileName
    12. toUser:(NSString *)username
    13. appKey:(NSString *)userAppKey;
    发送跨应用单聊位置消息
    1. /*!
    2. * @abstract 发送跨应用单聊地理位置消息
    3. * @param latitude 纬度
    4. * @param longitude 经度
    5. * @param scale 缩放比例
    6. * @param address 详细地址
    7. * @param username 单聊对象
    8. * @param userAppKey 单聊对象的appKey
    9. * @discussion 快捷方法,不需要先创建消息而直接发送。
    10. */
    11. + (void)sendSingleLocationMessage:(NSNumber *)latitude
    12. longitude:(NSNumber *)longitude
    13. scale:(NSNumber *)scale
    14. address:(NSString *)address
    15. toUser:(NSString *)username
    16. appKey:(NSString *)userAppKey;

    跨应用会话管理

    创建会话时指定对方用户所属 appKey,即可建立起一个和跨应用用户的会话。

    获取跨应用单聊会话
    1. /*!
    2. * @abstract 获取跨应用单聊会话
    3. *
    4. * @param username 单聊对象的username
    5. * @param userAppKey 单聊对象的appkey
    6. *
    7. * @discussion 如果会话还不存在,则返回 nil
    8. *
    9. */
    10. + (JMSGConversation * JMSG_NULLABLE)singleConversationWithUsername:(NSString *)username
    11. appKey:(NSString *)userAppKey;
    创建跨应用单聊会话
    1. /*!
    2. * @abstract 创建跨应用单聊会话
    3. *
    4. * @param username 单聊对象的username
    5. * @param userAppKey 单聊对象的appkey
    6. * @param handler 结果回调。正常返回时 resultObject 类型为 JMSGConversation。
    7. *
    8. * @discussion 如果会话已经存在,则直接返回。如果不存在则创建。
    9. */
    10. + (void)createSingleConversationWithUsername:(NSString *)username
    11. appKey:(NSString *)userAppKey
    12. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;
    删除跨应用单聊会话
    1. /*!
    2. * @abstract 删除跨应用单聊会话
    3. *
    4. * @param username 单聊用户名
    5. * @param userAppKey 单聊用户的appkey
    6. *
    7. * @discussion 除了删除会话本身,还会删除该会话下所有的聊天消息。
    8. */
    9. + (BOOL)deleteSingleConversationWithUsername:(NSString *)username
    10. appKey:(NSString *)userAppKey;