【问题标题】:Open Flutter App through externally shared content通过外部共享内容打开 Flutter App
【发布时间】:2020-04-06 04:17:37
【问题描述】:

我的 Flutter 应用有一个按钮,可以将内容分享给其他应用,例如 whatsapp、facebook 等。截至目前,它只共享文本。我想这样做,当用户通过 Whatsapp 和其他应用程序共享内容时,接收者可以单击共享链接、内容或其他内容,并且(如果他有应用程序)在导航到与相关的页面时启动应用程序共享内容。

如果我分享特定车型,其他用户可以点击 whatsapp 中的内容,启动应用导航到 CarPage,其中包含所分享的特定车型的详细信息。

我现在正在使用这个包https://pub.dev/packages/share,它允许 ACTION_SEND 意图。

【问题讨论】:

    标签: flutter share


    【解决方案1】:

    你需要firebase_dynamic_links

    如果用户在 iOS 或 Android 上打开动态链接,他们可以直接转到您的原生应用中的链接内容。

    如何创建动态链接?

    您可以通过使用 Firebase 控制台、使用 REST API、iOS 或 Android Builder API、Flutter API 或通过将动态链接参数添加到特定于您的应用的 URI 前缀来形成 URL 来创建动态链接。

    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://abc123.app.goo.gl',
      link: Uri.parse('https://example.com/'),
      androidParameters: AndroidParameters(
          packageName: 'com.example.android',
          minimumVersion: 125,
      ),
      iosParameters: IosParameters(
          bundleId: 'com.example.ios',
          minimumVersion: '1.0.1',
          appStoreId: '123456789',
      ),
      googleAnalyticsParameters: GoogleAnalyticsParameters(
          campaign: 'example-promo',
          medium: 'social',
          source: 'orkut',
      ),
      itunesConnectAnalyticsParameters: ItunesConnectAnalyticsParameters(
        providerToken: '123456',
        campaignToken: 'example-promo',
      ),
      socialMetaTagParameters:  SocialMetaTagParameters(
        title: 'Example of a Dynamic Link',
        description: 'This link works whether app is installed or not!',
      ),
    );
    
    final Uri dynamicUrl = await parameters.buildUrl();
    // use this code to sorten the url
    final ShortDynamicLink shortenedLink = await DynamicLinkParameters.shortenUrl(
      Uri.parse('https://example.page.link/?link=https://example.com/&apn=com.example.android&ibn=com.example.ios'),
      DynamicLinkParametersOptions(ShortDynamicLinkPathLength.unguessable),
    );
    
    final Uri shortUrl = shortenedLink.shortUrl;
    

    接收动态链接

     void initDynamicLinks() async {
        final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
        final Uri deepLink = data?.link;
    
        if (deepLink != null) {
          Navigator.pushNamed(context, deepLink.path);
        }
    
        FirebaseDynamicLinks.instance.onLink(
          onSuccess: (PendingDynamicLinkData dynamicLink) async {
            final Uri deepLink = dynamicLink?.link;
    
            if (deepLink != null) {
              Navigator.pushNamed(context, deepLink.path);
            }
          },
          onError: (OnLinkErrorException e) async {
            print('onLinkError');
            print(e.message);
          }
        );
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多