iOS调用QQ客户端,发起临时会话

作者: 朱晓辉 | 来源:发表于2016-06-08 11:44 被阅读5636次

一.前言:

前段时间项目中有个需求,在App内调用QQ客户端,在不是好友前提下,向指定的客服QQ发起临时会话,很简单的一个需求,但是实际实现起来却碰到很多问题.
  • 1.QQ开发者平台,并没有找到App调用QQ客户端发起临时会话方法,(只提供了网页端接入方法)
  • 2.网上搜到的一些方法,大部分都粗秒淡写,要么可以调用QQ客户端,不能成功发送消息,要么是其他问题.
经过一段时间摸索,发现接入方法相当简单,现将接入方法分享给大家,希望有同样需求的同鞋,少走弯路.

二.效果:

DEMO.gif

三.需求:

  • App内调用QQ客户端,在不是好友前提下,向指定QQ号发起临时会话

四.接入方法:

1.用来接收临时消息QQ号(拿这个QQ号举例:1099779883)需开通QQ推广功能,未开通QQ推广功能,是不能接收陌生人消息的,开通方法如下:
  • 1.开通方式:打开QQ推广网址 http://shang.qq.com 并用接收临时消息QQ号(1099779883)登录
  • 2.点击顶部导航栏:推广工具,(如图):

    Paste_Image.png
  • 3.在弹出菜单中点击'立即免费开通'(如图:)即可

    Paste_Image.png
2.将QQ(mqq字段)添加到项目plist文件白名单中(iOS9新出要求),方法如下:
  • 1.在项目info.plist添加LSApplicationQueriesSchemes字段 类型Array
  • 2.在此Array中添加一个 item 值设为:mqq(如图)

    Paste_Image.png
3.直接上代码:
    //是否安装QQ
    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]])
    {
         //用来接收临时消息的客服QQ号码(注意此QQ号需开通QQ推广功能,否则陌生人向他发送消息会失败)
         NSString *QQ = @"1099779883";
         //调用QQ客户端,发起QQ临时会话
         NSString *url = [NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_type=web",QQ];
         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
    }

五.注意事项:

  • 1.由于开发文档中规定App的正常使用不能依赖其他App,所以在项目中集成此功能的童鞋要注意,在未安装QQ客户端时建议影藏此功能,不然上架有被拒风险.
  • 2.我前期上架一个项目,便是这样处理的.

六.小结:

相关文章

网友评论

  • BigUncle88:非常好,我觉得我的项目连环信都不用做了,谢谢您的分享
    BigUncle88:@IIronMan 这得看你的想法咯
    IIronMan:想多了,如果用户没用装qq你聊什么天
    Jacky__燊:我也是这么打算的 哈哈~:smiley:
  • 抢手的哥:openshare不能解决么?
  • 睿少:你好,我现在已经能成功跳转至QQ的对话框,但是跳到该页面后没有网络,只有退出到QQ对话的列表,然后再点击对话进去才有网络数据。请问楼主知道这是为什么吗?
    睿少:是不是因为调用的是企业QQ的原因??所以请求代码不一样??
  • 饥渴的狗崽子:这个可以用UIWebView调用网页的唤起QQ会话的方法
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
    NSURL *url = [NSURL URLWithString:@"mqq://im/chat?chat_type=wpa&uin=501863587&version=1&src_type=web"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    webView.delegate = self;
    [webView loadRequest:request];
    [self.view addSubview:webView];
  • 水墨江南1990:你好,调用企业QQ账号一直发送不出去消息,且没法添加好友,这个怎么办?
    水墨江南1990:@BABY_5d6c 在手机端使用400QQ号码搜索到然后参与对话,在Mac端查看QQ资料,就能看到映射QQ了
    68818eebf41b:@水墨江南1990 请问你在哪里找到这个营销QQ对应的映射QQ的,我也遇到了同样的问题。这个映射QQ是说一个另外的QQ号么?还是url地址哪里和楼主提供的有不同?
    水墨江南1990:已解决:公司使用的不是企业QQ,而是营销QQ,找到营销QQ对应的映射QQ,然后添加跳转。
  • lyonLiu:直接下载你的demo,也是发送消息不成功的。自己换了qq,并且开通了也是发送不成功
    lyonLiu:请问是什么原因呢
  • ad193b2e3cf5:请问qq公众号怎么弄,还有我这边也是安你的方法弄的,还是发送失败。这和ios系统有关系吗
  • GSQ_Zzz:谢谢,完美实现,简单易懂,给个赞
  • 宋鸿康iOS:辉总,能调用微信么?
  • 浪漫恋星空:楼主 请问一下 按照你的方法 可以成功调起QQ成功发送消息 但是客服QQ无法接收到消息 已经开通了推广 请问这种情况如何解决
    浪漫恋星空:@朱晓辉 客服QQ如果没有开通推广 我试过 消息都无法发送成功 会直接失败的 确定已经开通了 消息能够成功发送 但是客服QQ就是无法收到消息 加好友之后 就可以接受到消息了 一脸懵逼 :unamused:
    朱晓辉:@浪漫恋星空 客服qq推广开通了没
  • changeUp:你好,我的在调用qq时跳转到了临时会话页面,但是发送消息发不过去,退出临时会话页面从qq列表点击进去,消息又能够发送出去。如何解决??
  • baozhong:客服QQ能否使用?
    雅之上善若水:@baozhong 你的解决了?
  • 风中芯子:大神:我按照您的方法,QQ推广已打开。白名单也添加了。但是消息发送还是失败,还请您答疑一下。
    雅之上善若水:@风中芯子 请问你解决了? 企业QQ 不行,怎么解决??
    风中芯子:@朱晓辉 已开通
    朱晓辉:@风中芯子 收消息的qq号,开通推广了没
  • 七秒记忆的鱼儿:如果我的是群号,该怎么跳转呢?这样的跳转连接在哪找的呢?
    七秒记忆的鱼儿:@朱晓辉 怎么判断我是不是在群里面?求解答
    七秒记忆的鱼儿:@朱晓辉 如果不是QQ群成员是不是可以吊起来添加到群的界面吗?
    朱晓辉:@七秒记忆的鱼儿

    调用QQ客户端,发起QQ群会话方式如下
    NSString *QQGroup = @"537476189";
    NSString *url = [NSString stringWithFormat:@"mqq://im/chat?chat_type=group&uin=%@&version=1&src_type=web",QQGroup];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

    注意:不是群成员,发送消息会失败.
  • 47e38b367d0c:我就是按照你说的来的啊,可是怎么跳转不回自己的app啊
    47e38b367d0c:@朱晓辉 :grin: 我也知道该有的,但就是没有怎么搞, 是在app 里面设置的么
    朱晓辉:@AdoMan 屏幕左上角系统自带有跳回按钮...
  • GSD_iOS:不错!
    朱晓辉:@GSD_iOS 谢谢!这个比较简单哈!你的SDAutoLayout库写的真的不错哈:+1::+1::+1:
  • 还是老徐ooo:你好,我【2.点击顶部导航栏:推广工具】没有出现【3.在弹出菜单中点击'立即免费开通'(如图:)】
    还是老徐ooo:@朱晓辉 谢谢,应该可以用 :+1:
    朱晓辉:@还是老徐ooo 1.点击推广工具时,没登录的话,要用qq号先登录,2.若已登录,点击后出现 让"选择组件样式"界面 说明此QQ号 已开通 QQ推广功能哈,不用再开通了,直接用就可以了.

本文标题:iOS调用QQ客户端,发起临时会话

本文链接:https://www.haomeiwen.com/subject/dtdjdttx.html