2016-04-19 10 views
1

背景開きます:生産(App Storeは)私は現在、我々の開発にユニバーサルリンクを実装していますがを構築 ユニバーサルリンク間違ったバンドルID

  • を構築する対ベータビルド対ビルドを

    • 我々のアプリを開発するために別のバンドルIDを使用していますApp Storeで現在
    • 当社の生産ビルドは、ユニバーサルリンク

    をサポートしていない私だけではなく、私のユニバーサルリンクが開かれていないこのクレイジーな問題が発生していますアプリの開発版では、生産版にはがなくても、代わりにプロダクション版がリリースされています。

    apple-app-site-associationファイルがhttps://branch.io/resources/universal-links/https://search.developer.apple.com/appsearch-validation-tool/の両方を使用して検証し、そのように見えるされています

    { 
        "applinks": { 
        "apps": [], 
        "details": [ 
         { 
         "appID": "DY74R9XXXX.com.myapp.consumer.debug", 
         "paths": [ "/profiles/*", "/messages/*"] 
         }, 
         { 
         "appID": "DY74R9XXXX.com.myapp.consumer", 
         "paths": [ "/profiles/*", "/messages/*"] 
         } 
        ] 
        } 
    } 
    

    https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.htmlによるとdetails配列は順番に評価されるべきであるとの一致を検出した後に停止します。

    ​​

    意図は同じユニバーサルリンクは私のチームの誰のための開発版にロードして、自分の携帯電話に.debugパッケージを持っていないエンドユーザーの生産バージョンにすることです。

    生産バージョンにapple-app-site-associationファイルを指し示す資格がapplinks:dev.myserver.comではないにもかかわらず、これが機能しないだけでなく、前述したように、ユニバーサルリンクは常に本稼働バージョンを読み込みます。これは狂っているようですが、公開していない任意のパッケージを起動でき、エンタイトルメントファイルが強制されていないことを意味します。

    さらに、detailsアレイから2番目のエントリを削除して、デバッグバージョン用の辞書のみを残すと、ユニバーサルリンクが機能しなくなり、代わりにSafariが開きます。配列の順序を変更しても効果はありません。私は9.3と9.3.1の両方でiPhone 6sでこの動作を経験しました。この2つのiss(アドバイスが間違ったパッケージを起動し、それが唯一のエントリであるときにデバッグパッケージを起動しない)に関するアドバイスは大歓迎です!第3レベルで別の何かに私のバンドルIDを変更した後、アレックス・バウアーの提案ごとに、私がすることができた

    オリジナル回答以下の更新解像度 -

  • +0

    このように奇妙なことに、iOSは、DY74R9XXXX.myapp.consumer.debugとDY74R9XXXX.myapp.consumer間のエンタイトルメントを何らかの形で組み合わせているように思えます。これは間違いなくどこにも記載されていません。デバッグビルドのバンドルIDを明白に異なるものに変更してみてください。 –

    +0

    @AlexBauer類似点のためにエンタイトルメントが混乱していると思われますが、これは1つの詳細エントリだけではうまくいかない理由を説明しません。しかし、あなたの提案に基づいてバンドルIDを 'com.myapp.dev'に変更しました。私は 'com.myapp.dev.dev'に変更しました。これはwel(私は4つのレベル識別子と典型的な3つのバグを心配していました)として働いていました。次のステップの提案はありますか? – emkman

    +1

    'apple-app-site-association'ファイルは、アプリケーションのインストール時にのみ取得されます。これが実際にキャッシングの問題だとすると、きれいなテストを得るたびに*両方の* appビルドを削除しなければならないと思います。そのうちの1つだけを削除して再インストールしていたのであれば、そのような問題がどのように残っているのか分かりました。 –

    答えて

    2

    これは、キャッシングの問題ありませんでしたリンクを働かせてください。私はバンドルIDをcom.myapp.consumer.debugに戻して、彼らは仕事を続けました。これはswcdサービスの不思議なキャッシング関連のバグでした。しかし、DY74R9XXXX.com.myapp.consumerエントリを配列の最初の場所に移動すると、エンタイトルメントが不足しているにもかかわらずコンシューマバージョンが引き続き起動します。これは、4つのレベルのバンドルIDと不正なマッチングに関連する潜在的に別のバグや追加バグのようです。それは私のInfo.plistproject.pbxprojファイルを変更しているため

    がバンドルIDを変更し、それをバック変更/正しい解決策を更新しましたが、実際に問題を修正しました。diffを見たとき、本当の問題が明らかになりました。我々は以前Info.plistにこの値を経由して私たちのバンドルIDを設定した。

    <key>CFBundleIdentifier</key> 
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)${BUNDLE_ID_SUFFIX}</string> 
    

    を静的PRODUCT_BUNDLE_IDENTIFIERと私たちのproject.pbxprojに。これは以前に公開された複数のenvビルドの共通プラクティスに基づいていました。しかし、Info.plistが常に含まれるようにXCodeの7でAppleが強くアップグレードの設定をお勧めしています

    <key>CFBundleIdentifier</key> 
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 
    

    これを限り、建物などの前に問題はなかったと適切なパッケージ名をiTunesに提出します。しかし、それはここに述べたように、特定の機能は、この正確な設定が必要なことが明らかである:here 見られるようにUse Bundle Identifier instead of Product Bundle Identifier with Xcode 7

    私はXCodeのを経由して各ビルドの種類については、製品バンドルIDを設定し、予想通り、今すべてが動作します。

    TL; DR - ユニバーサルリンクはあなたのPRODUCT_BUNDLE_IDENTIFIERを対象としませあなたCFBundleIdentifier。 PRODUCT_BUNDLE_IDENTIFIERがパッケージの最終バンドルIDと一致しない場合、ユニバーサルリンクは正しく動作しません。

    +0

    ハイライトの問題をありがとう。 PRODUCT_BUNDLE_IDENTIFIERの変更によって修正しようとしましたが、エラーが発生しています: _ 'XC $ CB_APP_ID'が 'appIdName'パラメータに無効です。 プロビジョニングプロファイル「iOSチームプロビジョニングプロファイル:*」は、関連するドメイン機能をサポートしていません。 プロビジョニングプロファイル「iOSチームプロビジョニングプロファイル:*」にはcom.appleは含まれていません。関連するドメイン資格。 SDK 'iOS 10.0'の製品タイプ 'Application'にコード署名が必要です。 ご確認ください。 – CoDe

    0

    複数のターゲットを使用して作業している場合のその他のソリューション&複数のFirebaseプロジェクト。

    1. 資格がFirbaseコンソールで別のディープリンクを作成し、ターゲットの各ファイルと
    2. 作成します。
    3. FirebaseコンソールのApp_codeを使用して、エンタイトルメントファイル - > Associated_Domainの名前を更新します。

    これだけです。異なるapp_codeを使用してリンクフォームを生成します。それは尊敬のアプリケーションを起動します。

    関連する問題