Flutter集成微信登录(iOS)

774 阅读1分钟

1、登录公司微信开放平台账号,注册应用,填写应用的名称、介绍、官网、图片、Universal Links(iOS)等等,Universal Links需要注意一点,最好增加一个路径,比如域名是www.xx 则可以在后面增加一个路径,比如/app/applicationName/, 其中applicationName是可以单独指定这个应用的路径,因为这个域名可能会用于多个app.

2、注册好应用后,到xcode增加微信的白名单,找到info.plist文件,增加白名单,允许当前app,后续直接打开微信应用:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
    <string>weixinULAPI</string>
    <string>weixinURLParamsAPI</string>
</array>

3、继续在info.plist文件里,增加URL Type:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLName</key>
    <string>weixin</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>微信注册的应用id</string>
    </array>
   </dict>
</array>

4、配置Associated Domains,Signing & Capabilities,选择Capability增加Associated Domains,然后将域名加入,然后到修改对应域名的apple-app-site-association文件内容,到域名/apple-app-site-association下载文件,编辑文件,编辑好后,发给维护人员,让他帮忙更新下文件,然后重新下载文件,确定文件已经更新了

{
	"applinks": {
		"apps": [],
		"details": [
			{
				"appID": "xxx.com.aaa.bbb",
				"paths": ["/app/bbb/*"]
			}
		]
    }
}

5、到flutter项目导入fluwx,然后pub get引入微信登录插件,并按照下面的截图,在pubSpec文件增加配置: 截屏2024-11-18 11.22.34.png

6、在Flutter的app初始化入口,初始化Fluwx,并监听_fluwx返回的response

WxSdk._() {
  _fluwx = Fluwx();
  _fluwx.registerApi(appId: _key, universalLink: _universalLink);
  _fluwx.addSubscriber((response) {
    mylog(msg: "微信授权Response========${response.toString()}");
    ///微信登录结果
    if (response is WeChatAuthResponse && _loginResponse != null) {
      _loginResponse!(response);
    }

    ///微信分享结果
    else if (response is WeChatShareResponse && _shareResponse != null) {
      _shareResponse!(response);
    } else if (response is WeChatSubscribeMsgResponse &&
        _focusPublicNumberResponse != null) {
      _focusPublicNumberResponse!(response);
    }
  });
}

7、在微信登录页面调用fluwx登录,可以发现没法走到上面的回调方法,打开iOS工程,在Appdelegate文件,按照下面截图增加方法,就可以拿到微信登录的参数了

截屏2024-11-18 11.25.52.png