Flutter plugin:flutter_qq_bridge

neverwoods發表於2018-07-29

更新

幾個月後突然發現竟然有人提 issue,看了一下是 Xcode 配置依賴的問題。

畢竟我也不是 iOS 開發者,只能說一下我是怎麼做的。

我試過且成功的新增依賴的最簡單步驟:

Runner -> Info -> Url Types 新增 URL_Schemes "tencent$app_id" (app_id 是你在開發者平臺註冊的應用 id)

Runner -> Build Phases -> Link Binary With Libraries -> 新增 SystemConfiguration.framework 依賴

然後就沒了。但是不排除其他朋友在使用的時候可能遇到問題,但是就像上面說的我不是 iOS 開發者,所以對 Xcode 的配置不是很精通,請見諒不能提供太詳細的指導。

前言

聽說 Flutter 已經有一段日子了,甚至挺早的時候就跑過 demo,但是直到上週才開始認真的開始學習。學著學著難免會想要用 Flutter 實現一波自己公司的 App。剛開始做就遇到了一個障礙:公司 App 採用的 QQ 登入和分享功能似乎做不了?我也上 pub 搜到過一個flutter_qq,但遺憾的是隻支援 Android,github 上也只有同一個作者做的這個 plugin。由於下了比較大的決心要搞出個樣子出來,所以就只能捲起袖子自己擼一個 plugin 了。這一擼就是好幾天的時光過去了。因為我不懂 iOS 開發,除了 Flutter 自身的問題以外,中途還遇到了不少 XCode 和 OC 的問題,也算是被折騰個半死。所以雖然最終出來的結果只能算湊合,但好歹也算是同時支援了 Android 和 iOS,填補了一個小空白,姑且不管需要的人是否那麼多(QQ sdk 好像是比較冷門),還是分享一下吧。

正文

1. 新增依賴

① in pubspec.yaml

dependencies:
  ···
  flutter_qq_bridge: ^0.0.3
複製程式碼

② terminal

flutter packages get

2. 程式碼中使用

import 'package:flutter_qq_bridge/flutter_qq_bridge.dart';

① 註冊 QQ sdk 例項

FlutterQqBridge.registerQq('$AndroidAppId', '$iOSAppId');
複製程式碼

若需等待註冊結果可新增 await

② QQ 登入

var res = await FlutterQqBridge.login();
Tencent tencent = Tencent.fromJson(res.message);
複製程式碼

③ 獲取 QQ 使用者資訊

var userRes = await FlutterQqBridge.getUserInfo(tencent);
QqUser user = QqUser.fromJson(userRes.message);
複製程式碼

④ 分享(目前僅支援新聞類分享)

var res = await FlutterQqBridge.shareToQQ(ShareQqContent(
  title: 'Remeet-只有00後的脫單神器',
  summary: '我們只想做個簡單幹淨的聊天軟體,幫你遇見喜歡的人。',
  targetUrl: 'http://a.app.qq.com/o/simple.jsp?pkgname=com.haisong.remeet',
  imageUrl: 'http://pp.myapp.com/ma_icon/0/icon_52621236_1517135649/96',
  appName: 'Remeet',
));
複製程式碼

3. 別忘了參照 QQ 官方的文件針對 Android 和 iOS 各自做配置

鳴謝

感謝 flutter_qq 的作者,很多地方參考了他的程式碼,在此獻上他的 github 地址: 傳送門

最後

放上我自己的連結吧:

pub: pub.dartlang.org/packages/fl…

github: github.com/neverwoodsS…

相關文章