提示出现位置是在设置推送Token的时候出现的:
V2TIMAPNSConfig *confg = [[V2TIMAPNSConfig alloc] init];
confg.businessID = sdkBusiId;
confg.token = self.deviceToken;
[[V2TIMManager sharedInstance] setAPNS:confg succ:^{
NSLog(@"-----> 设置 APNS 成功");
} fail:^(int code, NSString *msg) {
NSLog(@"-----> 设置 APNS 失败");//设置token失败 提示msg:sdk not login
}];
原因:
IMSDK使用离线推送的时候需要将DeviceToken和当前登陆用户进行绑定,所以要先进行用户登陆,在上报Token。
解决办法:
先调用login方法
/**
* 2.1 登录
*
* 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
*
* @note 请注意如下特殊逻辑:
* - 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED:6206 错误码,此时生成新的 userSig 重新登录。
* - 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
* - 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
*/
- (void)login:(NSString *)userID userSig:(NSString *)userSig succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
在登录成功的回调里在设置推送的Token
- (void)loginIM
{
[[V2TIMManager sharedInstance] login:@"用户账号" userSig:@"用户签名" succ:^{
V2TIMAPNSConfig *confg = [[V2TIMAPNSConfig alloc] init];
// 企业证书 ID,上传证书到 IM 控制台后生成
confg.businessID = @"证书id";
// 苹果后台请求的 deviceToken
confg.token = _deviceToken;
[[V2TIMManager sharedInstance] setAPNS:confg succ:^{
NSLog(@"-----> 设置 APNS 成功");;
} fail:^(int code, NSString *msg) {
NSLog(@"-----> 设置 APNS 失败 %@", msg);
}];
} fail:^(int code, NSString *desc) {
}];
}
这样就可以完美解决!!!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。