Qiyu

GitHub tag (latest by date) GitHub

Flutter目前官方沒有支援,所以自行實作原生SDK,製作 Flutter Package


如何使用?

初始化

  • appKey ➤ 七魚後台給予APP接入的金鑰
  • appName ➤ 七魚後台設置接入APP的名稱
  • deviceIdentifier ➤ 用戶裝置的ID,主要是設置後,七魚在客服的推播會附帶此資料,我們伺服器後端收到後可以經由此ID取得對應的推播Token(例如:Fcm Token),經由Token送出推播訊息給用戶
String appKey = 'd433ac25ced4170d98a66b3eda15es12';
String appName = 'qiyu-plugin-example';
String deviceIdentifier = 'AAAAAABBBBBBBBCCCCDDDDD';
await Qiyu.initialize(
    appKey: appKey, appName: appName, deviceIdentifier: deviceIdentifier);

用戶資訊

幫用戶設置多種個人資訊,每個資訊為一個物件,最終給予物件陣列的Json字串
姓名、手機、信箱為預設的資料欄位,其他需要自行補充

  • index ➤ 用於排序,顯示數據時數據項按index值升序排列;不設定index的數據項將排在後面;index相同或未設定的數據項將按照其在JSON 中出現的順序排列。
  • key ➤ 數據項的名稱,用於區別不同的數據
  • value ➤ 該數據顯示的值,類型不做限定,根據實際需要進行設定
  • label ➤ 該項數據顯示的名稱
  • href ➤ 超鏈接地址。若指定該值,則該項數據將顯示為超鏈接樣式,點擊後跳轉到其值所指定的URL地址
  • hidden ➤ 是否隱藏該item。目前僅對mobile和email有效
class QiyuUserInfoData {

  static const keyName = 'real_name';
  static const keyPhone = 'mobile_phone';
  static const keyEmail = 'email';

  int? index;
  String key;
  String value;
  String label;
  String? href;
  bool hidden;

  QiyuUserInfoData({
    this.index,
    required this.key,
    required this.value,
    required this.label,
    this.href,
    this.hidden = false,
  });

  factory QiyuUserInfoData.fromJson(Map<String, dynamic> json) => _$QiyuUserInfoDataFromJson(json);
  Map<String, dynamic> toJson() => _$QiyuUserInfoDataToJson(this);
}

登入,設置用戶資訊

  • userId ➤ 識別用戶的唯一ID
  • userInfoDataList ➤ 用戶資訊的清單
await Qiyu.setUserInfo(userId: 'yii555', userInfoDataList: list);

注意:記得切換用戶的時候要先登出後再進行登入

登出

final bool isLogoutSuccess = await Qiyu.logoutUser();

設置裝置ID

Qiyu.setDeviceIdentifier(deviceIdentifier: deviceIdentifier);

開啟客服頁面

Qiyu.showCustomerService();

範例

  @override
  void initState() {
    super.initState();
    runQiyu();
  }

  Future<void> runQiyu() async {
    // 取得設備ID
    String deviceIdentifier = '';
    final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    if (Platform.isIOS) {
      final IosDeviceInfo iosDevice = await deviceInfo.iosInfo;
      deviceIdentifier = iosDevice.identifierForVendor;
    } else if (Platform.isAndroid) {
      final AndroidDeviceInfo androidDevice = await deviceInfo.androidInfo;
      deviceIdentifier = androidDevice.androidId;
    }
    // 初始化
    await Qiyu.initialize(
        appKey: 'd433ac25ced4170d98a66b3eda15es12', appName: 'qiyu-plugin-example', deviceIdentifier: deviceIdentifier);
    // 設置用戶或更新用戶之前必須確保已經將用戶登出
    final bool isLogoutSuccess = await Qiyu.logoutUser();
    if (isLogoutSuccess) {
      // 設置用戶資訊
      List<QiyuUserInfoData> list = [];
      list.add(QiyuUserInfoData(key: QiyuUserInfoData.keyName, value: 'Test(555)', label: '名字'));
      list.add(QiyuUserInfoData(key: QiyuUserInfoData.keyPhone, value: '0939552555', label: '電話'));
      list.add(QiyuUserInfoData(key: QiyuUserInfoData.keyEmail, value: '555@gmail.com', label: '信箱'));
      list.add(QiyuUserInfoData(key: 'city', value: 'Taipei', label: '城市', index: 0));
      await Qiyu.setUserInfo(userId: 'yii555', userInfoDataList: list);
    }
  }

問題

  • SDK修復包,5.7.9,整合至Flutter App專案時,遇到Flutter找不到Android Module的問題。 解決方法請查看下方↓

連結

關於我