zoukankan      html  css  js  c++  java
  • flutter 使用 url_launcher 唤起三方应用【转】

    简介

    最近在fluttergo的issue中看到一条信息.笔者去pub库中简单的查了一个这个库的使用方法, 这个库的文档延续了google简约的风格. 查阅了baidu. google后也没有发现什么有意义的文档. 除了将英文翻译转化成中文, 就没有直接伸手党可以用的东西. 所以笔者亲自进行尝试.

    求问flutter如何打开第三方app,,我想flutter一件打开淘宝app,但是我发现我,我无法打开,我通过搜索引擎拿到的方法都是 url_launcher这个插件,这个插件,好像无法打开淘宝,,,,我目前的做法是 拿到了 手机淘宝app在ios的app Store链接,用url_launcher打开这个链接, 然后会跳转到app Store,app store在一建打开淘宝,,但是安卓我就没辙了,,求大神们,提供一下 flutter如何一键打开淘宝app fluttergo issue

    文档

    大家可以自行参考官方文档: 简约的文档

    安装

    将包的信息添加到pubspec.yaml:

    dependencies:
      url_launcher: ^5.1.3
    
    

    使用

    使用方法比较简单, 只要为某个按钮增加点击事件, 调用launch即可

    import 'package:url_launcher/url_launcher.dart';
    ...
        _launchURL() async {
            const url = 'xxx'; // 这个xx就是唤起三方应用的重要因素
        
            if (await canLaunch(url)) { // 判断当前手机是否安装某app. 能否正常跳转
              await launch(url);
            } else {
              throw 'Could not launch $url';
            }
         }
        @override
        Widget build(BuildContext context) {
            ...
            RaisedButton(
              onPressed: _launchURL,
              child: Text("打开三方应用"),
            ),
            ...
        }
    
    

    注意

    在笔者按照官方的说明一步一步的调用的时候. 在点击按钮的时候模拟器竟然报错了. 报错的信息如下:

    Unhandled Exception: MissingPluginException(No implementation found for method launch on channel)

    这个错误显示的是Plugin的方法没有找到,也许是Plugin没有注册成功。 拿到这条消息的时候, 我们也是一脸蒙蔽的. 在尝试了以下二种方案后app成功运行

    1. flutter clean 然后 flutter run/build
    2. 杀掉 flutter run 然后 flutter run/build

    以上二个方案, 不知道是哪个解决的这个问题. 我是挨个做了一遍后成功运行.

    总结

    在flutter打开三方应用, 除了官方文档中举例外. 我们通常需要打开类似于 淘宝,支付宝, 微信, 京东等app, 打开这一类的app需要知道对应 app的url schema, 即可顺滑的打开三方app

    这里以taobao做举例, 淘宝的schema是 taobao:

    _launchURL() async {
        String url ="taobao://item.taobao.com/item.html?id=41700658839";
        if (await canLaunch(url)) { 
          await launch(url);
        } else {
          throw 'Could not launch $url';
        }
     }
    
    

    最后附上一个网上搜来schema的集合, 原文地址

    QQ: mqq:// 
    微信: weixin:// 
    京东: openapp.jdmoble:// 
    淘宝: taobao:// 
    美团: imeituan:// 
    点评: dianping:// 
    1号店: wccbyihaodian:// 
    支付宝: alipay:// 
    微博: sinaweibo:// 
    腾讯微博: TencentWeibo:// 
    weico微博: weico:// 
    知乎: zhihu:// 
    豆瓣fm: doubanradio:// 
    网易公开课: ntesopen:// 
    Chrome: googlechrome:// 
    QQ浏览器: mqqbrowser:// 
    uc浏览器: ucbrowser:// 
    搜狗浏览器: SogouMSE:// 
    百度地图: baidumap:// bdmap:// 
    优酷: youku:// 
    人人: renren:// 
    我查查: wcc:// 
    有道词典: yddictproapp:// 
    微盘: sinavdisk:// 
    名片全能王: camcard://
    
    

    项目地址

    更多:跳转QQ聊天会话和QQ群聊

      /// 吊起QQ
      /// [number]QQ号
      /// [isGroup]是否是群号,默认是,不是群号则直接跳转聊天
      void callQQ({int number = 12345678, bool isGroup = true}) async {
        String url = isGroup
            ? 'mqqapi://card/show_pslcard?src_type=internal&version=1&uin=${number ?? 0}&card_type=group&source=qrcode'
            : 'mqqwpa://im/chat?chat_type=wpa&uin=${number ?? 0}&version=1&src_type=web&web_src=oicqzone.com';
        if (await canLaunch(url)) {
          await launch(url);
        } else {
          print('不能访问');
        }
      }
    

    参考链接:
    https://juejin.im/post/6844903945047916558
    https://www.jianshu.com/p/8dc54ef6329c
    https://www.jianshu.com/p/821a759fa56e

  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/KillBugMe/p/13601832.html
Copyright © 2011-2022 走看看