UNIAPP 打开 QQ 群聊窗口

为了方便反馈问题以及沟通,在 app 的版本界面添加了一个 QQ 群,现在的问题是QQ 群号有了,但是要发消息得先复制群号,打开 QQ 加群,才能发送消息。

网上搜索了一下 uniapp 打开 qq 聊天窗口的方法,网上的代码不少,但是基本都是抄来抄去,多数代码应该只在安卓手机上测试过,在苹果手机上可能没有测试,最后找到这么一篇算是比较有价值的:https://blog.csdn.net/m0_61447532/article/details/127958946

针对 安卓和 ios 需要单独处理:

let qq = '123456'
       if (plus.os.name == "Android") {
         var main = plus.android.runtimeMainActivity();
         var Intent = plus.android.importClass('android.content.Intent');
         var Uri = plus.android.importClass('android.net.Uri');
         var intent = new Intent(Intent.ACTION_VIEW, Uri.parse("mqqwpa://im/chat?chat_type=wpa&uin=" + qq));
         main.startActivity(intent);
       }
       if (plus.os.name == "iOS") {
         plus.runtime.launchApplication({
           action: "mqq://im/chat?chat_type=wpa&uin=" + qq + "&version=1&src_type=web"
         }, function(e) {
           plus.nativeUI.confirm("检查到您未安装qq,请先到appstore搜索下载?", function(i) {
             if (i.index == 0) {
               iosAppstore("itunes.apple.com/cn/app/mqq/");
             }
           });
         });
       }

不过上面的代码是针对 qq 聊天的,如果要打开 qq 群聊天窗口需要将 qq 群的号码转换成密钥:

登录:https://qun.qq.com/ 点击加群组件,选择 android:

对应代码为:

/****************
*
* 发起添加群流程。群号:闺蜜圈App(323089499) 的 key 为: 9x-uQPZ
* 调用 joinQQGroup(9x-uQPZ) 即可发起手Q客户端申请加群 闺蜜圈App(323089499)
*
* @param key 由官网生成的key
* @return 返回true表示呼起手Q成功,返回false表示呼起失败
******************/
public boolean joinQQGroup(String key) {
    Intent intent = new Intent();
    intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D" + key));
   // 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面    //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    try {
        startActivity(intent);
        return true;
    } catch (Exception e) {
        // 未安装手Q或安装的版本不支持
        return false;
    }
}

对应代码为安卓java 原生,这里只需要知道 uri 是怎么拼接的就 ok 了,换成 uni 代码:

if (plus.os.name == "Android") {

                    plus.runtime.openURL('mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D' +'9x-uQPZ')
                }

ios 代码:

- (BOOL)joinGroup:(NSString *)groupUin key:(NSString *)key{
NSString *urlStr = [NSString stringWithFormat:@"mqqapi://card/show_pslcard?src_type=internal&version=1&uin=%@&authSig=%@&card_type=group&source=external&jump_from=webapi", @"323089499",@"0P27iJ"];
NSURL *url = [NSURL URLWithString:urlStr];
if([[UIApplication sharedApplication] canOpenURL:url]){
[[UIApplication sharedApplication] openURL:url];
return YES;
}
else return NO;
}

用同样的方法把 uri 拼起来:

if (plus.os.name == "iOS") {
                    plus.runtime.launchApplication({
                        // action: "mqq://im/chat?chat_type=wpa&uin=" + qq + "&version=1&src_type=web"
                        action: "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=323089499&authSig=96utdUKhGUwrEV0Mi9PI8TCupddqg6Trri&card_type=group&source=external&jump_from=webapi"
                    }, function(e) {
                        plus.nativeUI.confirm("检查到您未安装qq,请先到appstore搜索下载?", function(i) {
                            if (i.index == 0) {
                                iosAppstore("itunes.apple.com/cn/app/mqq/");
                            }
                        });
                    });

然后就可以正常打开 qq 群聊窗口了:

参考链接:

https://www.dandelioncloud.cn/article/details/1478993088000643073

https://blog.csdn.net/m0_61447532/article/details/127958946

https://qun.qq.com/

☆版权☆

* 网站名称:obaby@mars
* 网址:https://obaby.org.cn/
* 个性:https://oba.by/
* 本文标题: 《UNIAPP 打开 QQ 群聊窗口》
* 本文链接:https://obaby.org.cn/2024/02/15255
* 短链接:https://oba.by/?p=15255
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

16 comments

  1.  Level 5
    Microsoft Edge 121 Microsoft Edge 121 Windows 10 Windows 10 cn中国–广东–珠海 电信

    丝滑,这个方便,不用做另外的站内信了 dance

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      本来想用企业微信的,结果不做企业认证只能接待 100 人,哈哈哈。就离谱,总不能用到一半之后不能用了吧。
      所以最后还是选择的 qq。

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      这几天一直在做些细节性的优化功能,嘻嘻。
      当然包括华为应用商店的整改。

    1. 公主 Queen 
      Google Chrome 120 Google Chrome 120 Windows 10 Windows 10 cn中国–山东–临沂 联通

      是哒,本来想做个留言功能的,后来觉得有点鸡肋。还不如直接微信或者qq,最后因为认证问题把微信放弃了,就只能选qq了

  2.  Level 5
    Google Chrome 121 Google Chrome 121 Mac OS X 10.15 Mac OS X 10.15 cn中国–河北–石家庄 电信

    接入微信得企业认证,这是断了个人独立开发者的后路……

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      现在个人开发者已经到了狗都嫌弃的地步了,没有企业认证寸步难行。

    2. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      人家没说不让接,让接,不过接了之后给你限制, cool

  3.  Level 6
    Microsoft Edge 121 Microsoft Edge 121 GNU/Linux GNU/Linux cn中国 中国联通

    今天收到阿里云的电话通知,说如果发布APP,需要特别备案~

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      因为 app 备案要依托于域名,所以要先有备案域名才能去备案 app。
      一环一环可以说卡的非常紧凑,缺任何一项都无法进行 app 备案。哈哈哈。
      不过特别备案是什么备案,怎么特别?

    1. 公主 Queen 
      Google Chrome 120 Google Chrome 120 Android 10 Android 10 cn中国 中国移动

      额 这个可能不大行 毕竟appid不一样,sdk应该不通用

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注