前言:
前段时间项目中有个需求,在App内调起QQ客户端和客服发起临时会话.
QQ开发者平台,并没有找到App调用QQ客户端发起临时会话方法,(只提供了网页端接入方法)。
网上搜到的一些方法,大部分都粗秒淡写,要么可以调用QQ客户端,不能成功发送消息,要么是其他问题.并且大部分只是说明了调起普通版QQ的方法,当用户没有安装普通QQ而且安装了国际版QQi或者TIM的时候那些方法都是无效的。
网上还有说接收临时消息的QQ号要开通QQ推广功能,没有开通的是接收不了陌生人消息的...但是我自己用个人QQ都可以......
**注意 **调起临时会话的话记得考虑用户没安装QQ而是安装了国际版QQi或者TIM,因为他们的Scheme是不一样的....此外,从外部APP打开TIM会导致TIM卡死(我不知道这是神马bug,然而网上大部分只是打开QQ没考虑后两种情况所以也查不到什么原因,官网自然也是啥都没提到...不知道现在怎么样了,没测试过它~~)
使用方法
-
将各版本Schemes添加到项目plist文件白名单中(iOS9开始的要求),方法如下:
- 在项目info.plist添加LSApplicationQueriesSchemes字段 类型Array
- 在这个Array中添加各个需要的QQ版本的Schemes
- 直接上代码:
if (![self OpenUrl:[NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_type=web",ServiceQQNumber]]) {//QQ
if(![self OpenUrl:[NSString stringWithFormat:@"mqqiapi://im/chat?chat_type=wpa&uin=%@&version=1&src_type=web",ServiceQQNumber]]){//国际版QQi
//if(![self OpenUrl:@"TIM://"]){//TIM //测试打开后会卡死
[xxHUD showError:@"无法打开,清先安装QQ"];
// }
}
}
- (BOOL)OpenUrl:(NSString *)url{
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]]){
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
return YES;
}else{
return NO;
}
}