如何实现facebook的url启动器?

问题描述 投票:0回答:1

我正在实现类似的功能 - 将会有一个按钮,如果用户点击该按钮,则会将用户带到特定的 Facebook 个人资料,以便通过 Facebook 进行交流。我已经通过url_launche实现了,但是不起作用。它显示错误 - 无法启动该 URL。

这是我的代码:

Future<void> launchFacebookProfile(String profileId) async {
    final Uri fbUri = Uri.parse('fb://profile/$profileId'); // Facebook app
    final Uri webUri = Uri.parse('https://www.facebook.com/$profileId'); // Fallback web URL

    try {
      if (await canLaunchUrl(fbUri)) {
        // Open the Facebook app
        await launchUrl(fbUri, mode: LaunchMode.externalApplication);
      } else if (await canLaunchUrl(webUri)) {
        // Fallback to opening in a web browser
        await launchUrl(webUri, mode: LaunchMode.externalApplication);
      } else {
        throw 'Could not launch Facebook profile';
      }
    } catch (e) {
      CustomSnack.warningSnack(e.toString());
    }
  }

您可以使用提供的链接- https://www.facebook.com/userID

这里是 AndroidMenifext.xm 文件意图:

<intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="whatsapp" android:host="send" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" />
            </intent-filter>

请帮助我解决问题并实现该功能。预先感谢。

flutter facebook webview android-launcher url-launcher
1个回答
0
投票

我使用

MethodChannel
本地实现它,而不使用
url_launcher

安卓 - 科特林
iOS-快速

将原生代码与flutter中的MethodChannel连接起来。

final platform = const MethodChannel("your_method_channel_key");

  openBrowser(String url) async {

    Map<String, String> args = {
      "url": url   //your url
    };

    await platform.invokeMethod("openBrowser", args);
  }

现在让我们用本机代码打开 URL。
科特林

if(methodCall.method == "openBrowser"){
                val arguments = methodCall.arguments as? Map<String, String>
                val url = arguments?.get("url")

                if (url != null) {
                    val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
                    startActivity(browserIntent)

                    result.success(true)
                } else {
                    result.error("INVALID_ARGUMENTS", "URL is required", null)
                }
            }

迅速

if methodCall.method == "openBrowser" {
              if let args = methodCall.arguments as? [String: String],
                 let urlString = args["url"],
                 let url = URL(string: urlString) {
                  
                  UIApplication.shared.open(url, options: [:], completionHandler: nil)
                  result(true)
              } else {
                  result(FlutterError(code: "INVALID_ARGUMENT", message: "Invalid URL", details: nil))
              }
          }
© www.soinside.com 2019 - 2024. All rights reserved.