美文网首页iOS 开发学习成长之路Object-CSwift
iOS 在App中调用QQ 发起临时会话

iOS 在App中调用QQ 发起临时会话

作者: TotoroLee | 来源:发表于2016-09-19 20:21 被阅读1717次

    近期在一个项目中有联系客服的需求,要求点击按钮唤起QQ客户端展示会话界面,在网上查找资料后发现,一些常用的方法基本都无法使用了,然后就去官方开放平台上寻找办法.以下共有三种方法,方法一已废弃,建议使用后两种.

    准备部分:
      做为客服接收临时消息的QQ,需开通QQ推广功能 -> '首页'-> '推广工具'-> '立即免费开通'

    推广工具
    方法一
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
    NSURL *url = [NSURL URLWithString:@"mqq://im/chat?chat_type=crm&uin=客服QQ号&version=1&src_type=web"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
    [self.view addSubview:webView];
    

    此方法是网上最为常见的,经测试无法使用,QQ客户端可以唤起,能够进入聊天页面但信息发送失败.咨询官网客服后的答复是该方法已经废弃,建议选用官方Demo的方法.大家可以试试,如果还能用的话给我也说说,还有记得在plist文件中加这个:

    <key>LSApplicationQueriesSchemes</key>
     <array>
      <string>mqq</string>
     </array>
    
    方法二

    在上图点击'立即免费开通'之后,会出现这张图

    通讯组件

    选择组件样式之后,会出现一段代码

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=客服QQ号&site=qq&menu=yes">
    ![点击这里给我发消息](http://wpa.qq.com/pa?p=2:客服QQ号:51)
    </a>
    

    这个方法和方法一基本是一样的.这是H5中简单的a标签,href为点击事件即跳转的下个界面,img则为点击的图片.对于这段代码处理的方式有很多:
    可以用webView中的 - (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL 方法加载这段a标签,效果是这样的:

    效果1

    也可以只用'href'里面的链接写个H5,自己设置样式,效果是这样的:

    效果2
    方法三

    官方Demo中所提供的方法(环境搭建和Api使用说明)
    主要依赖的库是
      TencentOpenApi_IOS_Bundle.bundle
      TencentOpenAPI.framework.
    如果项目中集成了 友盟 或 ShareSDK,并选择的有QQ相关库,就不需要再集成腾讯开放平台的库了,其实都是一样的.

    ShareSDK 友盟SDK

    使用方法:
    相关文件中导入 #import <TencentOpenAPI/QQApiInterface.h>
    调用方法中

    QQApiWPAObject *wpaObj = [QQApiWPAObject objectWithUin:@"客服QQ号"];
    SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:wpaObj];
    QQApiSendResultCode sent = [QQApiInterface sendReq:req];
    //sent为状态值打印,Command+左键 点击QQApiSendResultCode即可查看.
    

    在plist文件中加这个:

    <key>LSApplicationQueriesSchemes</key>
     <array>
      <string>mqqwpa</string>
     </array>
    
    其它

    由于苹果审核政策需求,建议大家对未安装QQ客户端隐藏此项功能.
    是否隐藏判断:

    //方法1:
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]) {   
         //安装    
    }else{        
        //未安装  
    }
    
    //方法2:
    集成相关SDK的情况下 
    在QQApiInterfaceObject.h中
    /**
     检测是否已安装QQ
     \return 如果QQ已安装则返回YES,否则返回NO
     */
    + (BOOL)isQQInstalled;
    

    END

    相关文章

      网友评论

      • dedenc:你好 我想问下 这个是网页版的 有没有手机上吊起qq和客服聊天的内容呢 我现在用户openurl的方式打开了qq 但是我不知道去哪里把qq号注册成为qq客服 请问楼主你知道吗
      • 8809d79ed536:照着你的方法做了,但是跳转后临时会话客服收不到,必须点击添加客服qq后,发送的消息客服才能收到

      本文标题:iOS 在App中调用QQ 发起临时会话

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