IM

# IM移动端业务流程 ### 常规集成(无UI库) #### 注意:如果集成IM的话,app入口必须是已登录用户,未登录用户限制IM |步骤|发出端|接收端|发出数据|接收数据|通信方式|流程说明 |-|-|-|-|-|-|-| |1.初始化|我方app|第三方sdk|sdkAppID(类型:int, 描述:自己在控制台申请的sdkAppID,它是腾讯云IM服务用于区分客户账号的唯一标识)config(类型:V2TIMSDKConfig, 描述:参数 V2TIMSDKConfig 用于对 SDK 进行初始化配置,其中较常用的是对日志级别的设置)V2TIMSDKListener监听对象(事件监听器提供了网络状态以及用户信息变更的监听)|-|函数调用,异步回调,V2TIMSDKListener代理处理|我方app调用函数`[[V2TIMManager sharedInstance] initSDK:1400000123 config:config listener:self]`进行初始化。 |2.生成UserSig|我方app|我方服务端|userName(类型:NSString, 描述:用户名)|userSig(类型:String, 描述:用户签名)|https网络请求,网络请求异步获取用户签名字符串|我方服务端提供接口genUserSig,我方app调用接口获取userSig| |3.登录|我方app|第三方sdk|UserID(类型:NSString, 描述:建议只包含大小写英文字母、数字、下划线和连词符集中类型的字符,长度最大不超过32字节)UserSig(类型:NSString, 描述:IM SDK 登录票据,第2步生成的UserSig)|登录成功回调`succ:^{}`登录失败回调`fail:^(int code, NSString *desc){}`|函数调用,异步回调|我方app调用 V2TIMManager 的 login(userID, userSig) 函数可以进行登录,只有在 SDK 登录成功后,才能使用 IM SDK 的各项能力。以下场景需调用登录:App 启动后首次使用 IM SDK 的能力时。IM SDK 抛出 onUserSigExpired 回调时,即登录票据已过期时,需要使用新的 UserSig 进行登录。IM SDK 抛出 onKickOffline 回调时,即当前用户被踢下线时,可以通过 UI 提示用户“您已经在其他端登录了当前账号,是否重新登录?” 如果用户选择“是”,就可以进行重新登录。以下场景无需调用登录:用户的网络断开并重新连接后,不需要调用 login 函数,SDK 会自动上线。当一个登录过程在进行时,不需要进行重复登录。| |4.登出|我方app|第三方sdk|函数调用,异步回调|登出成功回调`succ:^{}`登出失败回调`fail:^(int code, NSString *desc){}`|-|我方app调用 logout() 函数即可| |8.设置APNs|我方app|苹果推送服务器|-|deviceToken(类型:NSData, 描述:苹果后台对客户端的唯一标识)|-|我方app在didFinishLaunchingWithOptions方法中注册推送通知,则可在application的didRegisterForRemoteNotificationsWithDeviceToken的代理方法中获取deviceToken。| |8.1|第三方sdk|第三方服务端|param(类型:TIMTokenParam,描述:token参数,配置busiId,token这两个属性)|成功回调`succ:^{}`失败回调`fail:^(int code, NSString *msg){}`|-|第4步的登录成功回调中,我方app调用`[[TIMManager sharedInstance] setToken:param succ:^{`设置客户端Token和证书busiId |8.2|第三方sdk|第三方服务端|param(类型:TIMAPNSConfig,描述:APNs 配置)|成功回调`succ:^{}`失败回调`fail:^(int code, NSString *msg){}`|-|第4.1步的token上传成功回调中,我方app调用`[[TIMManager sharedInstance] setAPNS:config succ:^{`进行推送声音的自定义化设置| |5.监听登录状态|第三方sdk|我方app|notification (类型:NSNotification 描述:监听通知`TUIKitNotification_TIMUserStatusListener`)|接收数据在notification的object属性中(类型:TUIUserStatus枚举,NSInteger)|-|用户在线情况下被踢,通过监听用户状态处理(下线通知,连网失败,userSig过期)|