Flutter Open AppStore / PlayStore URL

时间:2018-04-06 04:03:11

标签: flutter

如何在Android和IOS上使用flutter打开PlayStore / AppStore的特定URL,具体取决于执行哪个智能手机? 我的意思是我想打开应用程序,不是浏览器或类似的东西。

在这个thread中,我找到了 android 的一些原生方式,但是我怎么能用flutter做到这一点?

final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

如果目前无法做到这一点,那么为插件url_launcher实现它将是一个不错的功能。

7 个答案:

答案 0 :(得分:5)

您可以使用此Library

基本上,要使用此插件,请在pubspec.yaml文件中添加launch_review作为依赖项。

launch_review: ^1.0.1

使用:

 import 'package:launch_review/launch_review.dart'; 

然后在Dart代码中的任何位置调用LaunchReview的静态启动方法。如果没有提供参数,它将考虑当前包。

LaunchReview.launch();

要打开任何其他应用程序的App Store页面,您可以传递应用程序ID。

LaunchReview.launch(androidAppId: <package name>,
                iOSAppId: <ios app id>);

答案 1 :(得分:4)

您还可以尝试store_redirect,它会自动检测并重定向到从中启动的应用程序。

答案 2 :(得分:3)

您可以按以下步骤使用url_launcher包打开应用商店/播放商店:

      _launchURL(String url) async {
         if (await canLaunch(url)) {
             await launch(url);
         } 
         else {
             throw 'Could not launch $url';
         }
       }

答案 3 :(得分:2)

您可以使用此插件。here

超级简单。 要使用此小工具,只需将包装名称(应用程序ID)写在您的dart代码上即可。

OpenAppstore.launch(androidAppId: "com.facebook.katana&hl=ko", iOSAppId: "284882215")

答案 4 :(得分:1)

您可以在抖动中执行类似的操作:

import 'package:url_launcher/url_launcher.dart';

try {
  launch("market://details?id=" + appPackageName);
} on PlatformException catch(e) {
    launch("https://play.google.com/store/apps/details?id=" + appPackageName);        
} finally {
  launch("https://play.google.com/store/apps/details?id=" + appPackageName);        
}

由于某种原因,异常/捕获似乎不起作用,所以最后添加'finally'就可以了:)

答案 5 :(得分:0)

我发现这个article对您的情况很有帮助。它可以在Android上运行,而我没有在IOS上尝试过。

使用url_launcher插件

答案 6 :(得分:0)

您也可以尝试store_launcher

示例

StoreLauncher.openWithStore(appId);