3

仮説: branch.io の長い URL にリダイレクトするカスタム URL 短縮機能があります。そのカスタム URL ドメインは、私のアプリの Universal Links の権利ファイルに登録されています。ユーザーが短いリンクをタップすると、アプリが開き、application:continueUserActivity:restorationHandler:... が呼び出されます。そのメソッドで、短いリンクの背後にあるリダイレクト URL (ブランチ) を取得し、新しいリンクに基づいて新しい NSUserActivity を作成し、 Branch SDK から "continueUserActivity" メソッドを (新しいアクティビティをパラメーターとして) 呼び出します。

問題は、Branch SDK からのコールバックが、そのリンクに接続されたものを何も返さないことです。URL が渡されなかったかのように返されます。

リダイレクトからのリンクをハードコードし、リダイレクトの応答を待たずにすぐに Branch SDK を呼び出すと、すべて正常に動作します。Branch SDKの時間に関連するものだと思います。

問題は、Branch にリンクを認識させ、上記のリダイレクト スキームを使用するときに必要なパラメーターを返すにはどうすればよいかということです。(Branch のものではなく、独自の URL 短縮サービスを使用したい)

4

1 に答える 1

0

Branch リンクを処理する必要があるかどうかを判断する際に、Branch は NSUserActivity のタイプが NSUserActivityTypeBrowsingWeb であることを確認します。そうである場合、Branch は .webpageURL をチェックして、Branch リンクであるかどうかを判断します。そうでない場合、Branch は、Branch リンクがクリックされていないと認識します。

アプリを別の方法で開いた後に、Branch リンクを手動で SDK に渡すには、.continue と .handleDeepLink の 2 つの関数を使用できます。

。継続する

    let activity = NSUserActivity(activityType: "NSUserActivityTypeBrowsingWeb")
    activity.webpageURL = URL(string: "https://testbed-swift.app.link/77Q527xswy")
    Branch.getInstance().continue(activity);

.handleDeepLink

    Branch.getInstance().handleDeepLink(URL(string: "https://testbed-swift.app.link/77Q527xswy"))

これらのメソッドのいずれかを呼び出すと、Branch SDK は渡された Branch リンクを処理します。これらのメソッドが機能しない場合は、ショートリンクではなく、実際に機能する Branch リンクをコードで渡していることを確認します。アプリを開くために使用しているもの。

于 2017-02-18T16:43:39.143 に答える