簡體   English   中英

Firebase 動態鏈接打不開app iOS

[英]Firebase dynamic link not opening the app iOS

我已經在我的設備上本地開發並安裝了一個 iOS 應用程序。

並在 info.plist 中將自定義方案設置為mydlink

將關聯域設置為 weel: applinks:<myapp>.app.goo.gl

在 firebase 上創建動態鏈接為:

https://<myapp>.app.goo.gl/?link=http://<mysite.com>/&ibi=<app bundle id>&ius=mydlink&ifl=https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id%3D<app store id>%26mt%3D8&pt=<app store id>

當我打開或單擊動態鏈接時,它會在“App Store”應用程序中打開應用程序頁面,但不會打開應用程序本身,盡管它已安裝。

我在這里錯過了什么?

如果您使用的是 iOS 9,則將使用通用鏈接。 通用鏈接在很多情況下不起作用,例如:

  • 如果你使用模擬器
  • 如果您嘗試在設備上的 safari 中直接打開鏈接(將其輸入到瀏覽器的地址字段中)

我花了很多時間嘗試這個,但永遠無法以可靠的方式讓它在模擬器上工作。 我最終做的是通過電子郵件將鏈接發送給我並從收件箱中打開它。 然后它每次都有效!

很抱歉回復晚了 - 我希望您的問題已得到解決,並且這對可能遇到相同問題的其他人有所幫助。

對於 iOS 9+,這里實際上可能存在一個或多個問題; Dynamic Links 依賴 Apple 的 Universal Links 在 iOS 9+ 上打開應用程序,這些建議旨在解決 Universal Links 和 Firebase 的問題,與 SDK 沒有直接關系。

  1. 在 https:// app_id .app.goo.gl/apple-app-site-association 驗證 assoc 文件是否正確 - 它應該類似於https://maps.app.goo.gl/apple-app-site -association但在“細節”中只有一個元素。
  2. 正如另一個答案所指出的,請驗證您的團隊 ID 是否在 Firebase 控制台中正確設置。
  3. 如果您長按鏈接然后單擊“在 Safari 中打開”,或者在應用程序通過通用鏈接打開后單擊了應用程序狀態欄上的“goo.gl>”按鈕,則 iOS 默認為打開Safari 中的通用鏈接。 這可以通過下拉在 Safari 中打開的分頁並單擊智能橫幅上的“在應用程序中打開”(或類似內容)來解決。

“ibi”參數不參與在 iOS 9+ 上的安裝后點擊中打開應用程序,但在未設置“ius”參數的早期版本中。

關於iOS 8,您可以嘗試運行該應用程序,然后在安裝該應用程序后單擊鏈接嗎? 在 iOS 9 之前的版本上,您可以通過將鏈接復制/粘貼到 safari 中進行測試。

https://firebase.google.com/docs/dynamic-links/ios

有時我們會在關聯域權限中出錯。 必須沒有空格

applinks:mydomain.page.link

以防萬一仍有人遇到此問題,請注意以下事項

  1. 動態鏈接現在在模擬器上打開,請隨意復制您的鏈接並粘貼到模擬器中的 safari。
  2. Chrome 和 safari 的動態打開方式不同,safari 只使用通用鏈接,而 chrome 使用 url scheme 和通用鏈接打開動態鏈接。 最終,您應該嘗試通過應用程序中的通用鏈接打開動態鏈接。

  3. 如果您的動態鏈接路由到 App Store 而不是打開您的應用程序。 您的通用鏈接有問題。 您可以暫時使用chrome進行測試。

    要設置通過通用鏈接打開動態鏈接,請檢查以下內容

    • 確保您的團隊 id 設置正確 在 firebase 控制台中,從https://developer.apple.com 中的會員詳細信息中獲取您的團隊 id

    • 確保您的域列在您的關聯域中,如下所示,域之間沒有空格在此處輸入圖片說明

    • 確保在您的蘋果開發者帳戶中開啟了關聯域在此處輸入圖片說明

    • 如果您使用的是自定義域,請確保將其添加到 info.plist 中,如下所示。 在此處輸入圖片說明

我遇到了同樣的問題。 有趣的是,如果您在 Chrome 中打開動態鏈接,應用程序將直接成功啟動。 但是在 Safari 中,盡管安裝了該應用程序,它還是會嘗試打開 AppStore。 我不知道為什么 Safari 在這種情況下不起作用。

我犯了一個錯誤,沒有為 DEBUG 設置關聯域,所以請確保您設置了所有 DEBUG 和 RELEASE 的關聯域

在此處輸入圖片說明

我在使用 iOS 14 時遇到問題,在調試模式下在設備上運行。 Link 總是將我重定向到 AppStore 應用程序而不是我的應用程序。 解決方案是在 iPhone Settings>Developer>Associated Domains Development 上啟用“Associated Domains Development”(在此處找到: https : //stackoverflow.com/a/63939770/6689321 )。 設置 開發商

由於 Firebase 在設置過程中的假設存在問題,Firebase 動態鏈接對我們不起作用(在 iOS9 上,它們使用通用鏈接)。 以下是我們解決應用程序問題的方法:

在將您的 iOS 應用添加到 Firebase 控制台項目設置時,Firebase 會要求您提供“團隊 ID”,並且它假定您的唯一應用 ID 的格式為 TeamID.com.foo.bar

然而,在我們的例子中,這不是我們唯一的應用程序 ID。 當我查看我們的配置文件時(在 developer.apple.com 上我找到了我們的配置文件並單擊了“編輯”),我看到我們唯一的應用程序 ID 實際上是 SomethingElse.com.foo.bar

我不得不進入 Firebase 控制台並在它要求輸入團隊 ID 的地方輸入“SomethingElse”,即使那不是我們的團隊 ID。 做出更改后,Firebase 動態鏈接開始正常工作。

Firebase 似乎假設您的唯一應用 ID 將始終以您的團隊 ID 開頭,但顯然情況並非總是如此。

請注意,更改您的團隊 ID 可能需要很長時間才能生效。 您可以通過檢查 app_id 的相應鏈接 ( https://app_id.app.goo.gl/apple-app-site-association ) 來查看更改已發生。

如果上述解決方法都不適合您,請檢查您是否在關聯域中添加了活動繼續。

下圖顯示了您必須添加的確切位置(如果您還沒有這樣做)

集成 Firebase 動態鏈接后,示例鏈接立即在裝有 iOS 8 的設備上開始工作。對於 iOS 9 設備,使用通用鏈接機制,如其他答案所述。 這意味着 Apple 需要更新用於驗證深度鏈接雙重身份驗證的授權數據。 根據 Apple 的App Search API 驗證工具,這可能需要 48 小時。

有故障排除技巧更通用的鏈接 在這里

遇到了同樣的問題。

我的解決方案是使用

標識符 -> 應用 ID -> 'my.app.ID' -> 前綴

您可以在以下位置找到它: https : //developer.apple.com/account/ios/identifier/bundle

而不是我使用的.pbxproj中的'DevelopmentTeam'編號, .pbxproj其添加到 Firebase 控制台中我的 iOS 應用程序的Team ID

並且不要忘記下載並將新的 .plist 添加到項目中。

我有好消息。

我總是聽說在模擬器上測試動態鏈接是不可能的

但是現在我們可以在模擬器上測試 firebase 動態鏈接

https://stackoverflow.com/a/56385506/6273003

在 safari 中打開鏈接時,它會顯示一個“打開(項目名稱)”按鈕。 如果按住此按鈕 2-3 秒,它會要求首次將其打開到不同的應用程序中。它還顯示您的應用程序名稱。 如果您選擇您的應用程序,它會打開您的應用程序。 這樣做之后,如果您再次打開此鏈接並在 safari 中按下按鈕,它總是可以正常工作。

這為我解決了問題。

我對最新的 flutter sdk 和 firebase 動態鏈接插件有同樣的問題。

嘗試了所有解決方案,唯一的解決方法是手動將com.apple.developer.related-domains鍵插入ios/Runner/Running.entitlements文件

<key>com.apple.developer.associated-domains</key>
<array>
  <string>applinks:abc.page.link</string>
</array>

在 Firebase 和 Xcode 項目中完成設置后。

在 SceneDelegate 中添加以下代碼而不是 AppDelegate。

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
if let incomingURL = userActivity.webpageURL {
    print("Incoming URL is \(incomingURL)")
    let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
        guard error == nil else{
            print("Found an error! \(error!.localizedDescription)")
            return
        }
        if let dynamicLink = dynamicLink {
            self.handleIncomingDynamicLink(dynamicLink)
        }
    }

}

在您的 Xcode 項目上設置正確的表格來聲明關聯域,您必須包含應用鏈接:

在此處輸入圖像描述

確保您在 Firebase 控制台中為您的應用設置了團隊 ID。 (然后您需要下載並導入 .plist 文件)。

這為我解決了問題。

我們遇到了類似的問題。 在我們的案例中,問題是生成帶有鏈接的電子郵件的軟件生成了一個新鏈接,該鏈接具有指向我們深層鏈接的 304 重定向。 這在 Safari 中不起作用(但在 Chrome 中)。

當您單擊電子郵件中的鏈接時,檢查您的深層鏈接是否實際上是打開的第一個鏈接。

我有同樣的情況,它在deeplink url上定義了ios應用程序后修復;

Dynamic Links -> choose your link -> Edit

確保您已經定義了 ios 應用程序;

在此處輸入圖片說明

我遇到了問題,AASA 文件在不同的位置不同

[domain]/.well-known/apple-app-site-association
[domain]/apple-app-site-association

來自分支的驗證器始終檢查非知名路徑上的文件。 這很令人困惑,因為它總是說一切都很好,即使不是。

對於 Firebase,請檢查您的托管並在公共目錄中搜索 .well-known 文件夾。 就我而言,我可以刪除它,運行firebase deploy --only hosting並讓 Firebase 為我生成所有 AASA 文件。

https://branch.io/resources/aasa-validator/

如果你確定你在 xcode 中的所有動態鏈接配置​​都是正確的,鏈接是好的,但它仍然打開 Appstore,你可以試試這個技巧:

  1. 復制鏈接並將其粘貼到筆記應用程序中
  2. 長按筆記中的鏈接以查看上下文菜單
  3. 如果您看到“在YourAppName 中打開”按鈕 - 嘗試按下它。

請同時檢查相關域:applinks:.app.goo.gl 是否正確? 動態鏈接很容易在 iOS 模擬器上工作,我沒有遇到任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM