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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM