web-dev-qa-db-ja.com

Flutterでの紹介報酬の実装

アプリケーションに紹介システムを設定して、ユーザーがメール/電話番号などで友達を招待できるようにします(どちらか簡単な方)。招待者がアプリケーションをインストールしたことが確認されると、元の招待に報酬が与えられますたとえば、バナー広告が1か月ない送信者。

私がオンラインで見つけることができる唯一の参照はこれです: https://pub.dev/packages/firebase_dynamic_links#-readme-tab-

これが私の目的であるかどうかはわかりませんが、Flutterチームによって設定されたため、実際に実装する方法についての説明はまったくありません。タイムコーダー、自分ですべての空白を埋めることができます。

これは私が求めているものに適切なプラグインですか?より良いリソースはありますか?

編集する

Firebase Dynamic Linksパスに移動します。私が最初に直面したハードルは、ドメインを所有する必要があり、ダイナミックリンクのURLを作成できることでした。そのため、昨夜自分でドメインを登録し、Firebaseがドメインを確認して接続するために必要に応じてセットアップしました。 Firebaseプロジェクト(これをステップ実行すると、すべてが正常に動作するように見えますが、TXTおよびこのプロセスに必要なAレコードの変更を反映するためにDNSホストに時間を与える必要がある場合があります)。

これで、example.comという名前の空白の検証済みドメインができました。

現在Firebase内で、私が作成したプロジェクトの下の左側にあるのはDynamic Linksと呼ばれるボタンです。これには、前に入力したAレコードでexample.comを確認する必要がありますが、確認すると、新しいダイナミックリンクを作成できます。

ここには5つのステップがあります。

ステップ1)短いURLリンクが表示されます。私の場合:example.com/Gd7W。私はこれを受け入れて、次にヒットしました。

ステップ2)ダイナミックリンクを設定します。ディープリンクURLとダイナミックリンク名を要求します。私の場合、example.com/apps/refer_a_friendを使用し、ダイナミックリンクに任意の名前を付けることができます。私は「Refer a Friend Promotion」と呼びました。次にヒット。

ステップ3)iOSのリンク動作を定義します。 「ブラウザでディープリンクを開く」と残しました

ステップ4)Androidのリンク動作を定義します。 「ブラウザでディープリンクを開く」と残しました

ステップ5)キャンペーントラッキング、ソーシャルタグ、詳細オプション。この段階でこのことが重要であるとは思われません。この投稿に必要な機能ではなく、機能するだけです。これは、プロモーションが機能するようになった後の分析とトラッキングのためのものです。後で戻って編集できます。

したがって、ステップ2では、私が参照したディープリンクURLは実際には存在しません。それが想定されているかどうかはわかりません。このページを自分のウェブサイトに作成するつもりなら、もしそうなら、このページに何を置くべきですか?私の現在の考えでは、このアドレスからアプリのGoogle PlayストアのURLへのリダイレクトを自分のサイトに作成する必要があります。私はこれを試しましたが、リダイレクトしていません。

次に、もう一度サンプルアプリに戻ります(ここでは、ここから取得した以下のコメントで取り組んでいるサンプルを参照しています: https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links/example )。

このセクションは、前のステップの独自のリンクとアドレスに合わせて編集する必要があるため、私たちが注目する必要があると思います。

final DynamicLinkParameters parameters = DynamicLinkParameters(
  uriPrefix: 'https://cx4k7.app.goo.gl',
  link: Uri.parse('https://dynamic.link.example/helloworld'),
  androidParameters: AndroidParameters(
    packageName: 'io.flutter.plugins.firebasedynamiclinksexample',
    minimumVersion: 0,
  ),
  dynamicLinkParametersOptions: DynamicLinkParametersOptions(
    shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
  ),
  iosParameters: IosParameters(
    bundleId: 'com.google.FirebaseCppDynamicLinksTestApp.dev',
    minimumVersion: '0',
  ),
);

私はこのコードセクションを変更して、上記の作業と一致するように、次のように更新しました。

final DynamicLinkParameters parameters = DynamicLinkParameters(
  uriPrefix: 'https://example.com/Gd7W',
  link: Uri.parse('https://example.com/apps/refer_a_friend'),
  androidParameters: AndroidParameters(
    packageName: 'company01.appname', //The appID of my app on the store
    minimumVersion: 0,
  ),
  dynamicLinkParametersOptions: DynamicLinkParametersOptions(
    shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
  ),
  iosParameters: IosParameters(
    bundleId: 'company01.appname', //The appID of my app on the store
    minimumVersion: '0',
  ),
);

アプリを実行して[ショートリンクを取得]ボタンをクリックすると、ログに次のエラーが表示されます。

PlatformException(short_link_error, 400: Your project does not own Dynamic Links domain: https://example.com

Firebaseコンソールではこのドメインが確認され、現在接続されているため、どちらが正しいエラーかはわかりません。正常に動作しているようです。本当の問題は、この時点で私のディープリンクが実際には何もしないことであるのかどうか疑問に思っています。前述したように、それが何をすべきか完全にはわかりません。

編集2

追加するだけですが、[長いリンクを取得]ボタンをクリックすると、実際には何かを返すようです。非常に長いURLは次のように表示されます。

https://example.com/Gd7W?amv=0&apn=company01.appname&ibi=company01.appname&imv=0&link=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcompany01.appname%26hl%3Den

これは、さまざまな時点で指定したすべてのコンポーネントのようですが、おそらく間違っています。これは一種の進歩のようです!

編集3

私は見つけることができるすべての例を通過してきました。それらのいずれも、ダイナミックリンクURLがどうあるべきか、それをどのように作成するか、どこを指し示すべきか、何をするべきかを教えてくれません。これは、これを機能させるためのミッシングリンクのようです。

これを設定するために他に何ができますか?

編集4

多くの人がこのスレッドを読んでいるのを知っているので、私はあなたにすべての実用的な例を提供できるようになりたいと思います。私はこれについて十分な支援を受けていなかったので、それを機能させることはありませんでした。期限に間に合うように、アプリから紹介を完全に削除する必要がありました。

7
Bisclavret

それが私がそれを働かせた方法です:

  1. Firebaseコンソールでプロジェクトを作成します。
  2. 左側のパネルで[ダイナミックリンク]を選択します
  3. 「はじめに」をクリックします
  4. Yourappname.page.linkのようなドメインを入力してください
  5. 「完了」をクリックします
  6. 左側のパネルで[プロジェクト設定]をクリックします
  7. ここに記載されているように、AndroidおよびiOSアプリを追加します: https://firebase.google.com/docs/flutter/setup
  8. IOSでダイナミックリンクを機能させるには、ここで説明する追加の手順をいくつか実行する必要があります。 https://www.youtube.com/watch?v=sFPo296OQqk&feature=youtu.be&t=2m40s

ダイナミックリンクを作成するには、次のコードを使用しました。

String link = Constants.REFERENCE_BASE_URL + referenceId; // it can be any url, it does not have to be an existing one
final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://myappname.page.link', // uri prefix used for Dynamic Links in Firebase Console
      link: Uri.parse(link),
      androidParameters: AndroidParameters(
        packageName: 'com.example.myappname', // package name for your app
        minimumVersion: 0,
      ),
      iosParameters: IosParameters(bundleId: 'com.example.myappname'), // bundle ID for your app
    );
final ShortDynamicLink shortDynamicLink =
        await parameters.buildShortLink();

ダイナミックリンクを受信するために、main.Dartファイルで次のコードを使用しました。

@override
  void initState() {
  super.initState();
  initDynamicLinks();
}

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