0

私は韓国で働いているジュニア Flutter エンジニアです。プロジェクトに関する問題があります。この特定の問題 (またはこれに類似したもの) の解決策を共有していただければ幸いです。

私の質問: Flutter inappwebview パッケージの MyChromeSafariBrowser() で JavaScriptChannel を使用したいと考えています。これで JavaScriptChannel を使用することは可能ですか?

InAppBrowser、HeadlessInAppWebView、InAppWebView がオプションであると示唆する人もいるかもしれませんが、私の状況ではアクセス/利用できません。

個人データの共有に関する同意ページ

この HTML ソースの目的: 特定の Web ページにリンクして、プライバシー データの使用について同意を得ています。ユーザーは署名を入力し、確認ボタンを入力します。それで

JavaScriptチャンネルコード

   // webview -> send data to the app
    function send_agree_result(result) {
      // distinguish IOS or Android
      var isMobile = {
        Android: function () {
          return navigator.userAgent.match(/Android/i) == null ? false : true;
        },
        iOS: function () {
          return navigator.userAgent.match(/iPhone|iPad|iPod/i) == null ? false : true;
        },
        any: function () {
          return (isMobile.Android() || isMobile.iOS());
        }
      };

      if (isMobile.any()) {
        if (isMobile.Android()) {
          window.bridge.sendResultAgree(result);      // 안드로이드(android)
        } else if (isMobile.iOS()) {
          webkit.messageHandlers.sendResultAgree.postMessage(result);   // 아이폰(ios)
        }
      }
   }

この JavascriptChannel 関数が動作します。また、アプリはウェブサイトから「はいまたはいいえ」を取得できます。その後、アプリで次のステップが開始されます。

Flutter inappwebview コード

import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';


void GeneAgreeView({String id}){
  final ChromeSafariBrowser browser = MyChromeSafariBrowser();
  InAppWebViewController webViewController;
  final GlobalKey webViewKey = GlobalKey();
  ChromeSafariBrowserClassOptions options = ChromeSafariBrowserClassOptions(

      android: AndroidChromeCustomTabsOptions(addDefaultShareMenuItem: true),
      ios: IOSSafariOptions(barCollapsingEnabled: true,

      ));
  PullToRefreshController pullToRefreshController = PullToRefreshController(
    options: PullToRefreshOptions(
      color: Colors.blue,
    ),
    onRefresh: () async {
      if (Platform.isAndroid) {
        webViewController?.reload();
      } else if (Platform.isIOS) {
        webViewController?.loadUrl(
            urlRequest: URLRequest(url: await webViewController?.getUrl()));
      }
    },
  );
  browser.open(
      url: Uri.parse("https://www.my-genomestory.com/agreements/index/bestf/?service=genome&clientKey=$id&machine=app"),

      options: ChromeSafariBrowserClassOptions(
          android: AndroidChromeCustomTabsOptions(addDefaultShareMenuItem: false),
          ios: IOSSafariOptions(barCollapsingEnabled: true)));

}

class MyChromeSafariBrowser extends ChromeSafariBrowser {

  @override
  void onOpened() {
    print("ChromeSafari browser opened");
  }

  @override
  void onCompletedInitialLoad() {
    print("Chrome")}
4

0 に答える 0