Uygulama mağazasına bir uygulama yüklemeye çalışıyorum ve sertifikaların bulunduğu sayfada bu hatayı alıyorum. Anlayabildiğim kadarıyla alanı değiştirdim, böylece eşleştiler, ama bir şeyi kaçırıyorum.

Herhangi bir yardım çok takdir edilecektir.

Uygulama mağazasına bir uygulama yüklemeye çalışıyorum ve sertifikaların bulunduğu sayfada bu hatayı alıyorum. Anlayabildiğim kadarıyla alanı değiştirdim, böylece eşleştiler, ama bir şeyi kaçırıyorum.

Herhangi bir yardım çok takdir edilecektir.

Yanıtlar:
Bunun neden düzeltildiğinden emin değilim, ancak Hedef'in Yetenekleri sekmesine girdim, iCloud'u AÇIK duruma getirdim, bir arşiv oluşturmaya çalıştım, başarısız oldu, iCloud'u tekrar KAPALI duruma getirdim, bir Arşiv oluşturma işlemi yapmayı denedim ve başarılı oldu ve bundan sonra sertifikaları otomatik olarak tekrar çözebildi.
Finder'a sağ tıklayın -> Klasöre Git ...
~/Library/MobileDevice/Provisioning
Xcode 11 için
~/Library/MobileDevice/Provisioning Profiles/
Tamamlanan tüm ön hazırlık profillerini silin.
~/Library/MobileDevice/Provisioning Profiles/
Oluşturduğunuz uygulama application-identifier, ön hazırlık profilinin beklediği değere sahip değil . 2ABCDEFG ekibi için appID com.example.foo sertifikası uygulama tanımlayıcısını bekliyor olacak: 2ABCDEFG.com.example.foo, uygulamanız appID'sinin com.example.foo olduğunu açıkladı, ancak uygulama tanımlayıcısı eşleşmedi , ya yanlış takım önekini kullanıyorsunuz ya da bundleID yanlış yapılandırılmış.
Benim durumumda, bir prod uygulaması ve bir qa uygulaması oluşturmama izin vermek için derleme şemaları kullanıyorum. prod için com.example.foo ve KG için com.example.foo.qa. Info.plist'teki bundleIdentifier'ımı $ (PRODUCT_BUNDLE_IDENTIFIER) $ (BUNDLE_SUFFIX) olarak ayarladım, bu simülatörde ve cihazda farklı uygulamalara sahip olmak için harika çalışıyor, ancak uygulama arşivleme aşamasında uygulama tanımlayıcısını oluşturduğunda Info.plist tarafından oluşturulan bundleIdentifier'ı okumamalıdır.
Durumu düzeltmek için FooProject.xcodeproj / project.pbxproj dosyasını (bir metin düzenleyiciyle) düzenleyerek QA buildSettings PRODUCT_BUNDLE_IDENTIFIER'ımı com.example.foo.qa olarak değiştirdim
Apple'ın Teknik Soru-Cevap bölümünü bu sorunu çözmek için derinlemesine incelediklerini görmek için görebilirsiniz. Dışa aktarılan uygulamanızda kod işareti yetkilerini çalıştırdıktan ve uygulamanızın hangi uygulama tanımlayıcısıyla oluşturulduğunu gördükten sonra, neyi yanlış yaptığınızı anlamak oldukça hızlı olmalıdır. https://developer.apple.com/library/content/qa/qa1879/_index.html Bu sayfayı Google aramamda bulamadım çünkü hata mesajındaki ifadeyi gerçekten kullanmıyorlar veya uygulamayı aramıyorlar - tam adıyla tanımlayıcı, ancak bunun yerine Uygulama Kimliği deyin.
Ayrıca, bu sorunun çözümü, uygulama tanımlayıcı yetkisine sahip yeni bir ön hazırlık profili oluşturmak değildir, bu yetkiye sahiptir, ancak sağlama profilindeki değer ve uygulamanızın eşleşmesi gerekir.
Belki de {project} .entitlements dosyası eksikti. @ Samkass'ın bahsettiğini yapmak dosyayı otomatik olarak oluşturacak ve çalışacaktır. Yani temelde yetenekler sekmesine gidin, her şeyi etkinleştirin ve devre dışı bırakın.
İCloud geçişini açmak, iCloud'u oluşturmak ve devre dışı bırakmak için değiştirmek, şunu söyleyen hatadan kurtuldu:
Profil, uygulama tanımlayıcı ve anahtar zinciri erişim grupları yetkilendirmeleri için yetki dosyasının değerleriyle eşleşmiyor.
Xcode 11'de bu, projeniz için bir .entitlement dosyası bulunmadığında gerçekleşebilir. Çözüm, 'İmzalama ve Yetenekler' altındaki '+ Yetenek' üzerine tıklayarak (bir .entitlement dosyasının oluşturulmasına yol açar) ve ardından yeteneği kaldırarak herhangi bir rastgele yetenek eklemek olacaktır. Bu, otomatik olarak bir sertifika sağlamanıza da izin verir.
Uygulama içi satın alma, push bildirimi, Inter App ses, Siri kiti vb. Gibi uygulamanız için gerekli olan uygulama özelliklerini kontrol edin .
Bu tür bir hatanın tek nedeni budur.
Uygulama kimliğinizde yukarıdaki bayrakların açık olduğundan emin olun.
Çoğu zaman push bildirimini yapılandırmadığınızda, Uygulama Kimliği geliştirmenizde Uygulama İçi satın alırsınız.
Benim için püf noktası
Benim durumumda sorun şuydu: Derleme adımı için kullanılan ön hazırlık profili, dışa aktarma adımı için kullanılan ön hazırlık profilinden farklı uygulama kimliği için oluşturuldu.
Bu nedenle, oluşturma ve dışa aktarma adımı için aynı ön hazırlık profilini kullandığınızdan emin olun.
Geliştirici hesabınızda Uygulama Kimliğiniz için etkinleştirdiğiniz seçeneklerle uygulamada çapraz kontrol yetenekleri.
TL; DR: Uygulama Kimliğinizi kontrol edin ve hizmetlerin hedefinizdekiyle eşleştiğinden emin olun.
Bana olan şey, Xcode 10.1'in bir Uygulama Kimliği oluşturmama yardım etmesine izin vermem ve bundan sonra burada açıklandığı gibi sorunla karşılaşmamdı. (Uygulamayı iTunesConnect'te oluştururken whildcard uygulama kimliğini seçtim, bu yüzden bunun yapıldığını bile fark etmedim.) İOS geliştirici portalını açtığımda, yeni uygulama kimliğinde Game Center ve Uygulama İçi Satın Alma otomatik olarak etkinleştirildi.
Game Center'ı sizin Target -> Capabilitiescihazınızda etkinleştiremediğim için Uygulama İçi Satın Alma'yı etkinleştirdim ve ardından uygulamam imzalanıp yüklenebilir.
Aynı sorunla karşılaştığımızda yukarıdakilerin hepsini denedik ama hiçbiri işe yaramadı.
Bizim için işe yarayan şey, paket tanımlayıcısını öncekiyle aynı olmayacak şekilde değiştirmektir, örneğin "com.name.App" yerine "com.name.App2"; xcode'un ön hazırlık profilini getirmeye / oluşturmaya çalışmasına izin verin ve ardından orijinal profiline geri dönün.
Bu fikir, Apple'ın geliştirici forumlarındaki bu başlıktan aldım - https://forums.developer.apple.com/thread/114539
Yinelenen bir hedef oluşturmaya çalıştıktan sonra bu sayfaya yakın zamanda rastladım - önerilerin hiçbiri benim için çalışmıyordu. Daha fazla araştırma ve bir miktar saç çekme, sonunda uygulamamın neyin yanlış olduğunu anlamaya çalışması için yapı ayarlarını incelemeye götürdü.
Projemin kendine ait bir tane olmak yerine ORİJİNAL hedefin yetkilendirme dosyasına işaret ettiği ortaya çıktı. Bu sorunu çözmek için Finder'daki orijinal yetkilendirmeler dosyasına gittim (ör. $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ), aynı klasör içinde bir kopya oluşturdum ve sonra yeniden adlandırdım (örn. NewTargetName.entitlements).
Ardından, yeni yetkilendirme dosyamı açtım ve uygulama tanımlayıcı alanını yeni hedefimin paket tanımlayıcısının sonuyla eşleşecek şekilde değiştirdim (ör. ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).
Son olarak, yapı ayarlarındaki 'Kod İmzalama Yetkileri' alanını yetkilendirmeler dosyamın yoluna güncelledim (benim için bu $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements satırlarında bir şeydi ).
İmzalama ve Yetenekler sekmesine döndüm ve işte sorun çözüldü. Umarım dışarıdaki biri bunu yararlı bulur.
Xcode 12 beta 3'te yepyeni bir uygulamayla bu sorunu yaşadım ( uygulama gönderimleri bugün başladı ).
Xcode, "Otomatik olarak imzalamayı yönet" seçeneğine sahipti. Ancak, "İmzalama Sertifikası" nda görüntülenen Ekip Kimliği, iTunes Connect web sitesinde görüntülenen Ekip Kimliği ile eşleşmedi. Bu, uygulamanın yüklenmesini engelleyen temel nedendi.
Nasıl düzelttim:
ExportArchive cmd'yi çalıştıran ve AppStore'a yükleyen bir Gitlab ardışık düzeni kurarken aynı sorunla karşılaştım. Derleme Ayarlarındaki DEVELOPMENT_TEAM'i İmzalama ve Onaylar'da seçilen aynı Ekiple değiştirerek çalıştırmayı başardım.
Çünkü daha önce, varsayılan olarak yanlış olan ve eşleşmeyen başka bir DEV TEAM kimliği kullanan ve "uygulama tanımlayıcı" = 12331232.com.bannana.apples.peach eşleşmediğinden şikayet eden boş olarak ayarlanmıştı. Bu da beni doğru DEV EKİBİ kurmaya yönlendirdi ve işe yaradı.
Xcode ver: Sürüm 11.3.1
Umarım bu birisine yardımcı olur.
Birden çok hedef:
... ve iCloud'u kullanın.
İCloud'u açmak ve kapatmak bizim için bir seçenek değildi. Bunu zaten üretimde kullanıyoruz ve onunla uğraşmak yerine ... Orijinal sorunun mesajını ve bir noktada bu varyasyonu da aldım:
Profil, uygulama tanımlayıcı ve anahtar zinciri erişim grupları yetkilendirmeleri için yetki dosyasının değerleriyle eşleşmiyor.
Buradaki diğer yanıtlardan yola çıkarak, tüm hedeflerin bir .entitlementsdosyası olmasını sağladık . Hedefte hiç yoksa böyle boş bir tane oluşturduk:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
... ve 's hedefini işaret Code Signing Entitlementde Build Settingsboş için.entitlements dosyanın.
Çözüldü!
İçinde bulunan tüm profilleri sil ~/Library/MobileDevice/Provisioning Profiles/
entitlements.plist.