web-dev-qa-db-ja.com

ブランチディープリンクがアプリケーションを開かない

私は Branch を使用してiOSアプリケーションにディープリンクを実装しようとしましたが(失敗しました)。ブランチURLは直接App Storeにリダイレクトされ、アプリケーションを開こうとすることはありません。私は何かを逃しているに違いない。

私がやったこと:

  1. 含まれているブランチSDK(CocoaPods)がアプリケーションplistにbranch_keyを追加しました
  2. アプリケーションplistのURLタイプにURLスキームを追加
  3. プロジェクトと開発者コンソールのアプリIDの両方でEnabledAssociated Domains
  4. エンタイトルメントファイルがビルドに含まれていることを確認しました。

  5. AppDelegateに登録されたディープリンクハンドラー

ダッシュボード:設定->リンク設定:

  1. 「常にアプリを開こう」がチェックされている
  2. 「IOS URIスキーム」は、アプリケーションのカスタムURIスキームに設定されます。
  3. 「ユニバーサルリンクを有効にする」にチェックを入れます。
  4. バンドルIDとApple App Prefixの両方が正しく設定されています。

    ブランチダッシュボードの[マーケティング]タブで、1つのリンクを作成しました。このリンクを自分にメールで送信し、デバイス(Mail.app)で開きます。 Safariが開き、アプリケーションがインストールされていないかのようにApp Storeが開きます。

application:openURL:sourceApplication:annotationapplication:continueUserActivity:restorationHandlerも呼び出されません。

AppDelegateメソッド:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let branch: Branch = Branch.getInstance()
    branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in
        if (error == nil) {
            // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
            // params will be empty if no data found
            // ... insert custom logic here ...
            NSLog("params: %@", params.description)
        }
    })
    return true
}

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
    // pass the url to the handle deep link call

    return Branch.getInstance().continueUserActivity(userActivity)
}

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    // pass the url to the handle deep link call
    Branch.getInstance().handleDeepLink(url);

    // do other deep link routing for the Facebook SDK, Pinterest SDK, etc
    return true
}

設定手順がありませんか?これは、アプリケーションがApp StoreではなくXcodeデバッグを介してインストールされるためですか?アプリケーションのデリゲートメソッドが呼び出されることを期待していますが、そうではありません。

25
Nick

アプリケーションはApp Store/Test Flight/Ad Hoc経由でインストールする必要があります。そうでない場合、アプリケーションはインストールされているとは見なされません。

アドホックプロビジョニングを使用してデバイスにアプリケーションをインストールし、すべてが機能しています。

13
Nick

私にとって、アドホック配布なしでテザーをインストールしたにもかかわらず、リンクは機能しました。その後、ある日それは機能しなくなりました。これは、アプリ内のbncへの転送リンクをクリックしたためです。

その修正は簡単で、リンクを長押ししただけです。オプションは「アプリで開く」を示します。これをクリックすると、リンクがアプリによって処理されます。次回以降、Safariはこれをデフォルトの動作として記憶しているため、長押しをしなくてもリンクは期待どおりに機能します。

11
kdeo

私も同じ問題を抱えていましたが、私の解決策はあなたのものとは異なります。

注:アプリをデバッグモードで開くことができます(上記のコメントの Alex Bauer で指摘されているように、私はそれを行いました)セクション)。

.plist 2つの異なるキーを追加しました。1つはliveで、もう1つはtestです(同時に)。上記の構成設定とともに。

私が使っていたディープリンクのドメインはこれでした。 bnc.lt。問題についてBranch Ioサポートチームにメールを送信し、次のように返信しました。

問題が発生している理由は、引き続きGoogleのレガシーを利用しているためですbnc.ltリンクドメイン。このリンクドメインは、この1年で徐々に廃止されました。新しいリンクドメイン(app.link)のおかげで、開発と機能はかなり前から止まっています。問題を修正してAASAバリデーターを正しく機能させるには、ブランチダッシュボードでリンクドメインをbnc.ltからapp.linkに変更する必要があります( https://dashboard.branch.io/settings/link )。この変更を行ったら、新しいapp.linkリンクドメインと古いbnc.ltリンクドメインを受け入れるようにアプリを更新する必要があります。 https://Gist.github.com/ethanneff/a2a70d1b3518c638701c28b1bd374e8

上記のリンクをご覧ください。

それがあなたの問題を解決することを願って、幸せな分岐:)

1
Nasir

私は同じ問題を抱えていました-ここでの回答のいくつかは日付が付いているので、更新を提供しようとします:

その修正は簡単で、リンクを長押ししただけです。オプションは「アプリで開く」を示します。

これはiOS 11で廃止されたので、iOS 10でテストしているのでない限り、これはオプションではありません。

アプリケーションはApp Store/Test Flight/Ad Hoc経由でインストールする必要があります。そうでない場合、アプリケーションはインストールされているとは見なされません。

アレックスがコメントで指摘したように、これは正確ではありません。アプリがXcode経由でインストールされている場合、ブランチリンクは機能します。

私にとっての問題は、私のデバイスでのある種のキャッシュの問題でした。複数のスキーマDebug&Releaseがあり、それぞれに独自のブランチキーとリンクがあります。いくつかの方法が混同され、リンクが1つのスキームで開かない場合があります。デバイスを強制的に再起動することで、この問題を解決できました。

0
DoesData