Flutter打开应用商店/播放商店URL

x759pob2  于 2023-01-10  发布在  Flutter
关注(0)|答案(7)|浏览(560)

如何在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

dgjrabp2

dgjrabp21#

你可以用这个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>);
6za6bjd0

6za6bjd02#

您可以使用url_luncher并打开基于平台的url,如下所示:

import 'package:url_launcher/url_launcher.dart';

if (Platform.isAndroid || Platform.isIOS) {
  final appId = Platform.isAndroid ? 'YOUR_ANDROID_PACKAGE_ID' : 'YOUR_IOS_APP_ID';
  final url = Uri.parse(
    Platform.isAndroid
        ? "market://details?id=$appId"
        : "https://apps.apple.com/app/id$appId",
  );
  launchUrl(
    url,
    mode: LaunchMode.externalApplication,
  );
}
    • 注**
  • 您可以从http://itunes.apple.com/lookup?bundleId=YOUR_BUNDLE_ID获取iOS应用ID,然后查找trackId
  • 这在iOS模拟器上不起作用,因为它们没有应用程序商店
  • mode设置为LaunchMode.externalApplication将"阻止" safari闪光灯一秒钟
w8f9ii69

w8f9ii693#

你可以在flutter中做类似的事情:

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);        
}

由于某种原因,异常/catch似乎不起作用,所以添加“finally”就成功了,finally:)

wfauudbj

wfauudbj4#

您可以使用url_launcher包打开appstore/playstore,如下所示:

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

u0sqgete5#

这就像是这个问题最流行的答案,但不需要说Android包.另外,这个解决方案不显示Android上的吐司说“请评价应用程序”.
它取决于open_storepackage_info_plus

const appStoreId = "1234567890"; // Your app's App Store ID
final packageName = (await PackageInfo.fromPlatform()).packageName;

OpenStore.instance.open(
  androidAppBundleId: packageName,
  appStoreId: appStoreId,
);
3phpmpom

3phpmpom6#

你可以用这个插件。这里
超级简单。要使用这个插件,只需像这样在你的dart代码上写上包名(app id)。

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

vbkedwbf7#

您也可以尝试store_launcher
示例

StoreLauncher.openWithStore(appId);

相关问题