web-dev-qa-db-ja.com

アプリがインストールされていない場合、Firebase Dynamic Linkが「Dynamic Link not found」を引き起こす

DynamicLinksに問題があります。アプリがインストールされている場合、iPhoneでは、ダイナミックリンクによりディープリンクを含むiOSアプリが開き、すべてが正常に動作します。ただし、アプリがインストールされていない場合は、Apple App Storeにアプリのページを表示する代わりに、「ダイナミックリンクが見つかりません」というWebページが表示されます。

ここにデバッグリンクがあります: https://www.nomadflare.com/app/?ibi=com%2Enomadflare%2ENomadFlare&imv=1%2E0&ofl=https%3A%2F%2Fwww%2Enomadflare% 2Ecom&link = https%3A%2F%2Fnomadflare%2Ecom%2Fapp%2F%3Finvitedby%3DdZ3I3pK0KzcOGhO8AoVbBnn8XsO2&d = 1

そして、これが私が全体をどのように構成したかです。 Firebaseプロジェクトの設定で、App Store IDとチームIDを設定しました。

Project settings in Firebase console

Dynamic Linksの設定で、カスタムドメインとサブパスを使用して新しいURLプレフィックスを定義しました(ドメインのルートにWebサイトがあり、Firebase Hostingでホストされています)。

Dynamic Links settings

それで私は https://nomadflare.com/Apple-app-site-association に以下を持っています:

_{"applinks":{"apps":[],"details":[{"appID":"HLAKBN9F84.com.nomadflare.NomadFlare","paths":["NOT /_/*","/*"]}]}}
_

次に、XCodeプロジェクトで、関連ドメインを機能で有効にし、最初の関連ドメインをapplinks:$(DYNAMIC_LINKS_DOMAIN)に設定します。DYNAMIC_LINKS_DOMAINは、ビルド構成に依存するユーザー定義のビルド設定ですが、prodは_nomadflare.com_。

情報/ URLタイプでは、カスタムURLスキームは$(PRODUCT_BUNDLE_IDENTIFIER)です(これもビルド構成によって異なりますが、製品版では_com.nomadflare.NomadFlare_です)。

最後に、私のSwiftコードでは、ユーザーが[共有]ボタンをタップしたときにトリガーされる次の関数があります。

_    func share() {
        guard let uid = Session.shared.authenticatedUser?.id else {
            return
        }

        guard let customDomains = Bundle.main.object(forInfoDictionaryKey: "FirebaseDynamicLinksCustomDomains") as? [String],
            let bundleIdentifier = Bundle.main.bundleIdentifier,
            let websiteUrlString = Bundle.main.object(forInfoDictionaryKey: "WebsiteUrl") as? String,
            let websiteUrl = URL(string: websiteUrlString),
            let appStoreID = Bundle.main.object(forInfoDictionaryKey: "AppStoreID") as? String else {
            return
        }

        let urlBase = customDomains[0]
        let link = URL(string: "\(urlBase)/?invitedby=\(uid)")
        let referralLink = DynamicLinkComponents(link: link!, domainURIPrefix: urlBase)

        referralLink?.iOSParameters = DynamicLinkIOSParameters(bundleID: bundleIdentifier)
        referralLink?.iOSParameters?.minimumAppVersion = "1.0.0"
        referralLink?.iOSParameters?.appStoreID = appStoreID

        referralLink?.otherPlatformParameters = DynamicLinkOtherPlatformParameters()
        referralLink?.otherPlatformParameters?.fallbackUrl = websiteUrl

        KRProgressHUD.show()
        referralLink?.shorten { (shortURL, warnings, error) in
            KRProgressHUD.dismiss()
            if let error = error {
                print(error.localizedDescription)
                return
            }
            let invitationUrl = shortURL
            let text = NSLocalizedString("Check out NomadFlare. It's a dating app for travellers and digital nomads.", comment: "")
            let shareAll = [text, invitationUrl!] as [Any]
            let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
            activityViewController.popoverPresentationController?.sourceView = self.view
            self.present(activityViewController, animated: true, completion: nil)
        }
    }
_

そして、ここに私のInfo.plistの関連するキーがあります:

_<key>FirebaseDynamicLinksCustomDomains</key>
<array>
    <string>https://$(DYNAMIC_LINKS_DOMAIN)/app</string>
</array>
<key>LSApplicationQueriesSchemes</key>
<key>WebsiteUrl</key>
<string>$(WEBSITE_URL)</string>
<key>AppStoreID</key>
<string>1474350816</string>
_

そして、_WEBSITE_URL_は、もう1つのビルド構成固有のユーザー定義設定であり、その値は、本番環境では_https://www.nomadflare.com_です。

私は私の紹介リンクのlink部分に何を入れたのか本当にわかりません。

3
Sebastien

また、アプリのアプリストアIDとダイナミックパラメータのiTunesパラメータを設定する必要があります。よろしくお願いいたします。

1
Saifullah ilyas