【问题标题】:How to launch whatsapp and facebook messenger window from Flutter to point to a specific contact?如何从 Flutter 启动 whatsapp 和 facebook messenger 窗口以指向特定联系人?
【发布时间】:2018-11-13 07:47:09
【问题描述】:

使用 url_launcher 我可以打开手机拨打号码。

 var phone = "+123456789";
 launch("tel://$phone");

我怎样才能为 facebook messenger 和 whatsapp 做同样的事情?

【问题讨论】:

    标签: facebook flutter whatsapp


    【解决方案1】:

    我找到了解决办法。

    打开whatsapp:

    var whatsappUrl ="whatsapp://send?phone=$phone";
    await canLaunch(whatsappUrl)? launch(whatsappUrl):print("open whatsapp app link or do a snackbar with notification that there is no whatsapp installed");
    

    打开 Messenger 或 Facebook:

    首先获取短网址

    如果您的 Facebook 个人资料是 facebook.com/yourName facebook url 是 fb.me/yourName 和 messenger url 是 m.me/yourName

    然后你做 launch("http://$messengerUrl");

    Facebook 网站会自动在应用程序中打开链接,即使它通过 URL 浏览器访问。如果没有安装应用程序,它将转到应用程序/播放商店

    【讨论】:

    • 奇怪的是,我发现canLaunch 会返回false,尽管如果您仍然启动它,它仍然可以正常工作。
    • ^^ 是的。我想现在最好用 try catch 代替 canLaunch()
    • 我发现这确实会启动 WhatsApp,但如果联系人不在您的列表中,则不会打开聊天栏。有什么解决方法吗?
    • 如何只打开 WhatsApp 应用,而不是特定聊天?
    • 当我打开 m.me/something 时,我在 Android 上得到 ERR_UNKNOWN_URL_SCHEME。似乎正在尝试意图://打开应用程序
    【解决方案2】:

    要打开 WhatsApp,您可以使用此插件:https://pub.dartlang.org/packages/flutter_launch

    1.将此添加到您的包的 pubspec.yaml 文件中:

    dependencies:
        flutter_launch: "^0.3.0"
    

    2。安装它

    $ flutter packages get
    

    3。导入它

    import 'package:flutter_launch/flutter_launch.dart';
    

    4.示例:

    await FlutterLaunch.launchWhatsapp(phone: "5534992019999", message: "Hello");
    

    完整示例:https://pub.dartlang.org/packages/flutter_launch#-installing-tab-

    【讨论】:

    • 有没有什么方法可以在没有特定电话号码的情况下分享午餐?
    • launchWathsApp?在发布包之前仔细检查方法拼写会很棒
    • @AndreyGordeev 我不知道你是在讽刺还是真心暗示,但我笑死了
    【解决方案3】:

    导入包url_launcher:

     url_launcher: ^6.0.3
    

    导入依赖:

    import 'package:url_launcher/url_launcher.dart';
    

    输入你的网址:

    const _url = 'https://api.whatsapp.com/...';
    

    创建你的函数:

    void _launchURL() async => await canLaunch(_url) 
        ? await launch(_url) : throw 'Not found $_url';
    

    在 Button 中使用示例:

    FloatingActionButton(
      onPressed: _launchURL,
      ...
    ),
    

    这对我有用! :D

    【讨论】:

      【解决方案4】:

      我们可以使用flutter包https://pub.dev/packages/url_launcher

      用于发送数字和文本--->

      whatsapp://send?phone=XXXXXXXXX&text=Hellothere!
      

      仅用于发送文本 --->

      https://api.whatsapp.com/send?text=Hellothere!
      

      【讨论】:

        【解决方案5】:

        您可以使用 Flutter URL 启动器插件来启动 whatsapp 应用程序。在那里你需要为 android 和 iphone 添加条件。您可以阅读完整的Flutter tutorial here

        安卓版

        var whatsappURl_android = "whatsapp://send?phone="+whatsapp+"&text=hello";
        

        苹果手机

        var whatappURL_ios ="https://wa.me/$whatsapp?text=${Uri.parse("hello")}";
        

        首先检测手机操作系统版本 - android OR iOS

            if(Platform.isIOS){
            // for iOS phone only
            if( await canLaunch(whatappURL_ios)){
               await launch(whatappURL_ios, forceSafariVC: false);
            }else{
              ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: new Text("whatsapp no installed")));
        
            }
        
          }else{
            // android , web
            if( await canLaunch(whatsappURl_android)){
              await launch(whatsappURl_android);
            }else{
              ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: new Text("whatsapp no installed")));
        
            }
        
        
          }
        

        【讨论】:

          【解决方案6】:
          import 'package:url_launcher/url_launcher.dart';
          
          void _contactViaWhatsApp(context) async {
              String whatsAppUrl = "";
          
              String phoneNumber = 'your-phone-number';
              String description = "your-custom-message";
          
              if (Platform.isIOS) {
                whatsAppUrl =
                    'whatsapp://wa.me/$phoneNumber/?text=${Uri.parse(description)}';
              } else {
                whatsAppUrl =
                    'https://wa.me/+$phoneNumber?text=${Uri.parse(description)}';
              }
          
              if (await canLaunch(whatsAppUrl)) {
                await launch(whatsAppUrl);
              } else {
                final snackBar = SnackBar(
                  content: Text("Install WhatsApp First Please"),
                );
                ScaffoldMessenger.of(context).showSnackBar(snackBar);
              }
            }
          

          【讨论】:

            猜你喜欢
            • 2015-08-01
            • 2013-09-24
            • 1970-01-01
            • 2015-10-24
            • 2013-10-05
            • 1970-01-01
            • 2017-09-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多