2

iOSアプリにfirebaseダイナミックリンクを実装していますが、すでにリンクを解析したり、AppStoreにリダイレクトしたりできます。ユーザーがダイナミックリンクからアプリをインストールしたときに、アプリの最初の実行を区別したい-イントロをスキップしたい表示されると予想されるコンテンツを彼に表示します。

application(_:didFinishLaunchingWithOptions:)動的リンクを介して起動されたと言えるように、キャッチできるパラメーターはありますか?

メソッドapplication(_:continueUserActivity:userActivity:restorationHandler:)は後で呼び出されるため、イントロは既に起動されています。

AppStore でアプリを公開する必要があるため、このケースはテストが困難です。

4

2 に答える 2

5

実際には、これを機能させるためにアプリを App Store に公開する必要はありません。リンクをクリックし、App Store を閉じてから、Xcode (または TestFlight や Fabric などの他のベータ配布プラットフォーム) を介してアプリ ビルドをインストールします。全く同じ効果。

Firebase docsによると、最初のインストールで呼び出されるメソッドはopenURL(いいえ、これも意味がありません) です。このメソッドは Universal Links 用であり、リンクを開いたときにアプリが既にインストールされているcontinueUserActivity場合にのみ使用されます。

アプリがインストール後に「遅延」リンクから初めて開いたときを検出する方法はわかりませんが、ディープ リンクが存在する場合はいつでも共有コンテンツに直接ルーティングすることができます (イントロをスキップします)。ディープ リンクが存在しない場合は、通常のイントロを表示します。


代替オプション

Branch.ioをチェックしてみてください(完全開示: 私は Branch チームに所属しています)。とりわけ、Branch は Firebase Dynamic Links の優れた無料のドロップイン代替品であり、多数の追加機能を備えています。Branch がすぐに返すすべてのパラメータの例を次に示しますdidFinishLaunchingWithOptions

{  
    "branch_view_enabled"   = 0; 
    "browser_fingerprint_id" = "<null>"; 
    data = "{  
      \"+is_first_session\":false,
      \"+clicked_branch_link\":true,
      \"+match_guaranteed\":true,
      \"$canonical_identifier\":\"room/OrangeOak\",
      \"$exp_date\":0,
      \"$identity_id\":\"308073965526600507\",
      \"$og_title\":\"Orange Oak\",
      \"$one_time_use\":false,
      \"$publicly_indexable\":1,
      \"room_name\":\"Orange Oak\", // this is a custom param, of which you may have an unlimited number
      \"~channel\":\"pasteboard\",
      \"~creation_source\":3,
      \"~feature\":\"sharing\",
      \"~id\":\"319180030632948530\",
      \"+click_timestamp\":1477336707,
      \"~referring_link\":\"https://branchmaps.app.link/qTLPNAJ0Jx\"
    }"; 
    "device_fingerprint_id" = 308073965409112574; 
    "identity_id" = 308073965526600507; 
    link = "https://branchmaps.app.link/?%24identity_id=308073965526600507"; 
    "session_id" = 319180164046538734;
}

これらのパラメーターの詳細については、Branch のドキュメント (こちら) を参照してください。

于 2016-10-24T19:25:05.730 に答える
1

うーん...私の知る限りapplication:(_:didFinishLaunchingWithOptions)、動的リンクによってアプリが開かれていることを知らせるフェーズでキャッチできるものは実際には何もありません。continueUserActivityおっしゃる通り、電話が来るまで待つしかありません。

とは言っても、FIRDynamicLinks.dynamicLinks()?.handleUniversalLinkほぼ瞬時にブール値を返すため、ユーザー エクスペリエンスを損なうことなく、それを利用してアニメーションに短絡させることができるはずです。コールバック自体は、短縮された動的リンク (ネットワーク呼び出しが必要) か拡張されたリンク (不要) かによって、数ミリ秒後まで発生しない場合があります。

于 2016-10-24T16:58:08.767 に答える