0

我是一名在韩国工作的初级 Flutter 工程师!我有一个关于我的项目的问题。如果您能分享此特定问题(或类似问题)的解决方案,将不胜感激。

我的问题:我想在 Flutter inappwebview 包的 MyChromeSafariBrowser() 中使用 JavaScriptChannel。可以在其中使用 JavaScriptChannel 吗?

有些人可能会建议 InAppBrowser、HeadlessInAppWebView、InAppWebView 可能是一个选项,但是,在我的情况下,我无法访问/使用。

共享隐私数据的协议页面

此 HTML 源代码的目的是什么:我们链接特定网页以获得使用隐私数据的同意。用户输入他们的签名,然后输入确认按钮。然后

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 函数将被操作。该应用程序可以从网站上获得“是或否”。然后下一步将在 App 中开始。

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