9

我發現XCode 8的問題,其中.entitlements文件未被正確引用的每個方案。基本上,我的發佈方案引用了我的Debug .entitlements文件。這是一個問題,因爲我們實施了新的Rich推送通知邏輯,並且需要使用App組。Xcode 8:每個方案的不同權利導致錯誤

我使用兩個不同的團隊(開發和生產),所以會有兩個特定的應用程序組。

任何人都知道如何解決這個問題?

謝謝

+1

我米也有這個問題。儘管在'CODE_SIGN_ENTITLEMENTS'生成設置中進行了正確配置,我們的QA方案試圖將'生產'值用於'aps-environment'權利。 –

+0

@AlbertBori檢查我的答案...它會幫助你。 –

回答

10

我找到了解決方案。請一個.entitlements文件補充一點:然後,在目標

<key>aps-environment</key> 
<string>$(APS_ENVIRONMENT)</string> 
<key>com.apple.security.application-groups</key> 
<array> 
    <string>$(APP_GROUP)</string> 
</array> 

>構建設置 設置在簽署同.entitlements文件>代碼簽名應享權利 添加用戶定義的設置爲APS_ENVIRONMENT和APP_GROUP設置正確的組爲每目標。

因此,基於目標Xcode將使用您爲APS_ENVIRONMENT和APP_GROUP設置的內容。

你也可以在plist中做到這一點...今天做了一些驚人的清理。

+0

我在過去的一年左右使用了這個解決方案,但發現偶爾蘋果開發中心會顯示一些捆綁ID與錯誤的組關聯,這可能會破壞手動代碼簽名。很多時候我不得不去那裏糾正這種聯繫(只是爲了讓它稍後再改變)。很難理解爲什麼/如何發生,可能取決於我的設置,但直覺是Xcode做自動事情,不喜歡變量。 –

3

雖然蒂姆的解決方案大多爲我工作,Xcode得到了所有的不安,並表示自動配置無法解決權利文件的問題。我不認爲它喜歡這個變量。

我們的解決方案是:

  1. 啓用一個需要訪問每一個目標都應用羣體。

Enable all app groups

  • 轉到項目中定義的應用程序組的名稱稱爲PROJECT_APP_GROUP項目級用戶定義的設置 - >構建設置,點擊「+」按鈕,然後選擇「添加用戶定義的設置」。
  • User-Defined PROJECT_APP_GROUP setting

  • 設置在info.plist文件爲需要應用程式組訪問每個目標的變量。
  • enter image description here

  • 然後在運行時通過從目標的info.plist文件獲取APP_GROUP可變訪問正確的應用程序組。

    + (NSString *)appGroupIdentifier 
    { 
        // this method returns the app group identifier by fetching it from the info.plist file. 
        // this string is dynamic based on build scheme. for instance group.ourApp vs. group.ourApp-dev 
        return [[[NSBundle mainBundle] infoDictionary] valueForKey:@"APP_GROUP"]; 
    } 
    
  • OR

    現在我想起來了,如果你有設置爲每個製作預處理宏,它可能更容易做這樣的事情:

    + (NSString *)appGroupIdentifier 
    { 
    #ifdef BUILD_DEV 
        return @"group.myApp-dev"; 
    #elif BUILD_STAGING 
        return @"group.myApp-staging"; 
    #else 
        return @"group.myApp"; 
    #endif 
    } 
    
    +1

    這種方法的缺點是,你的應用程序在同一時間「使用」所有3個組。當然,你正在控制你的代碼在看哪一個,但是iOS認爲所有的東西都以某種方式被使用。這意味着當您刪除開發應用程序以測試新安裝的某些內容時,它不會清空應用程序組 - 您也必須刪除臨時和推送應用程序。 –

    +0

    @KieranHarper你是對的,我們在經過一些測試後發現了這一點,並最終採用了更像Tim的方法。 –

    +0

    這適用於我謝謝! –

    相關問題