逻辑

最近在写的应用需要实现打开微信的功能,对应原生来说这个很容易实现。 思路就是: * iOS需要找到对应App的URL Scheme,配置在项目中 * 检测是否能打开这个App * 打开App

实现

| 配置URL Scheme

iOS需要在项目中配置指定的URL Scheme,可以在点击这里open in new window查看你需要打开应用的URL Scheme,

提前设置好打开APP的列表,也就是白名单,并配置到工程的 info.plist中去。 LSApplicationQueriesSchemes ,加入对应的 URL Scheme,如图

https://img01.jituwang.com/171030/256786-1G030214S965.jpg
<key>LSApplicationQueriesSchemes</key>
	<array>
		<string>wechat</string>
	</array>
| 编码实现

检测是否能打开这个App,并打开app业务实现,我们可以使用url_launcher这个插件,可以到这里搜索https://pub.dartlang.org/

  • 在项目.yaml文件依赖内添加库依赖,vscode保存会自动获得packages,或终端命令:flutter packages get.

  • 实现调转的逻辑,也可以写在你封装好的公共类里,提供接口出来。可以拷贝下面的代码,在需要调用的地方调用这个方法即可。

/*
  * 检测是否安装了微信
  * 
  * 1. 配置url Scheme
  * 2. 用Application 的canopenUrl 的方法判断 (YES代表已安装)
  */
  _launchURL() async {
    // 1.url Scheme
    const url = 'wechat://';
    
    // 2. 判断当前手机是否安装某app. 能否正常跳转
    if (await canLaunch(url)) {
      // 2.1 正常跳转
      await launch(url);
    } else {
      // 2.2 不能跳转
      throw 'Could not launch $url';
    }
  }

相关源码可以到github下载:https://github.com/Qson8/check_app_install