Xcode 8 "aps-ortam yetkisi, gönderme sırasında uygulamanın imzasında eksik"


118

Son 6 ay içinde düzinelerce sürüm gönderdiğimiz bir uygulamam var ve APNS kullanıyoruz. Xcode 8'e yükselttikten sonra Apple'dan aşağıdaki e-postayı aldım

Sayın geliştirici,

APP_NAME için son teslimatınızla ilgili bir veya daha fazla sorun tespit ettik. Teslimatınız başarılı oldu, ancak bir sonraki teslimatınızda aşağıdaki sorunları düzeltmek isteyebilirsiniz:

Eksik Anında Bildirim Yetkisi - Uygulamanız, Apple'ın Anlık Bildirim hizmeti için bir API içeriyor, ancak aps-ortam yetkisi, uygulamanın imzasında eksik. Bunu çözmek için, Temel Hazırlık Portalı'nda Uygulama Kimliğinizin anında bildirim için etkinleştirildiğinden emin olun. Ardından, uygulamanızı aps-environment yetkisini içeren bir dağıtım ön hazırlık profiliyle imzalayın. Bu, doğru imzayı oluşturur ve uygulamanızı yeniden gönderebilirsiniz. Daha fazla bilgi için Yerel ve Anında Bildirim Programlama Kılavuzu'ndaki "Sağlama ve Geliştirme" bölümüne bakın. Uygulamanız Apple Push Bildirimi hizmetini kullanmıyorsa herhangi bir işlem yapmanız gerekmez. Bu uyarıyı durdurmak için API'yi gelecekteki gönderimlerden kaldırabilirsiniz. Üçüncü taraf bir çerçeve kullanıyorsanız,

Sorunları düzelttikten sonra, iTunes Connect'e yeni bir ikili program yüklemek için Xcode veya Application Loader'ı kullanabilirsiniz.

Saygılarımızla,

App Store ekibi

Garip olan, developer.apple.com -> Certificates, Identifiers & Profiles adresine gittim ve AppId'mde hala Push Bildirimleri etkin durumda. Farklı bir şey yapmıyorum, o zaman şimdiye kadar yaptığımdan, Xcode 8 güncellemesinin bir şeyi bozup bozmadığını merak ediyorum. Herhangi bir fikir?

BTW: Anında Bildirim Programlama Kılavuzu için koydukları bağlantı e-postada bozuktu, bu yüzden bu iyiye işaret değil.

Yanıtlar:


156

Aslında çok kolay. Bazı nedenlerden dolayı Xcode 8'de devre dışı bırakıldı, ancak Hedefler -> Yetenekler'e gidin ve bu görünümde Push Bildirimlerinin doğru olduğunu doğrulayın. Benim için tıklamak zorunda kaldım bir "Beni Düzelt" vardı ve işte.


4
Bu sorunun garip yanı çözüm değildi, Xcode 7'de bunun etkinleştirilmiş olması ve yükseltmeden sonra devre dışı bırakılmasıydı.
Unome

2
Ayrıca, yetkilendirmeler dosyasına girmem ve APS Ortamı değerini 'üretim' olarak değiştirmem gerekiyordu, çünkü oluşturulduğunda varsayılan olarak 'geliştirme' olarak ayarlandı.
Bek

61
Son zamanlarda Apple'da işe alınan bazı beyinsiz insanlar olmalı .. Neden geliştiricileri varsayılan olarak devre dışı bırakarak ve bu konuda herhangi bir uyarı yapmadan örtük olarak uygunsuz değerler belirleyerek geliştiricilere zaman kaybediyorlar? Profiller, sertifikalar, hata ayıklama ve diğer sinir bozucu şeyleri oluştururken bir gün kaybettim ..
Hristo Atanasov

3
En sonunda! Bu çok saçma, çalışmasını sağlamak çok zor. Yaklaşık 5 saattir sertifikaları / profilleri kaldırıyorum ve yeniden oluşturuyorum. İşin iyi yanı, bu sertifikaların / profillerin / tanımlayıcıların ne olduğunu şimdi tam olarak anladığımı söyleyebilirim :) Bu ipucu için teşekkür ederim.
Kamil Rykowski

4
@bek, muhtemelen onu geliştirme olarak bırakmanız gerektiğini unutmayın. İTunes Connect'e yüklendikten sonra otomatik olarak üretime geçer.
Montdidier

84

Bende de aynı sorun var ve Xcode8'de Push bildiriminin varsayılan olarak kapalı olduğundan eminim. Ben fark etmedim. Dikkatli olun.

kabiliyet


Bana hesabımda neden anlık bildirim bölümünün olmadığını söyleyebilir misin?
Anuj

28

Xcode 8'de, yetkilerinizin artık Uygulama Tanımlayıcılarından değil, uygulama hedefinizde seçilen yeteneklerden geldiği bir değişiklik oldu. Bu nedenle, Unome'un (OP) dediği gibi, Anında Bildirimlerin açık olduğunu doğrulamanız gerekir.

Benim için bu bir "Beni Düzelt" düğmesi değildi, ancak iki yetki dosyam vardı (biri geliştirme ve diğeri dağıtım için). Push Bildirimleri özelliğinin değiştirilmesi, aps-environmentanahtarı - değeriyle birlikte development- geliştirme yetkileri dosyasına ekler, ancak onu dağıtım yetkileri dosyasına eklemez. Aynı anahtarın dağıtıma kopyalanması, iTunes Connect'e yüklerken uyarı e-postasından kurtulmak için çalıştı.

Çoğu proje için, Anlık Bildirimleri açmak yeterli olmalıdır veya zaten açıksa ancak anahtar yetkilerde değilse, kapatıp tekrar açmayı deneyin.


Bu varım teknedir, benim de belirtmek ne olursa olsun o hariç .entitlementscari config / şeması için dosyaya, her zaman kullandığı productionolarak aps-environment.
Albert Bori

Yeteneklerdeki push Notificaition'ı değiştirmek Xcode 8'imi çökertiyor !!
djay

2
@AlbertBori Tuhaf, sadece gelişmeyi göstermesini sağlayabildim, ki bu iyiydi çünkü arşivlendiğinde olarak göründü production.
timgcarlson

6
@meteors Değer ise tamam olmalıdır development. Proje arşivlendiğinde ipa'da değiştirilecektir.
timgcarlson

2
@timgcarlson Bu aslında arşivleme sırasında olmaz. Gönderim sırasında veya dışa aktarıldığında gerçekleşir. Ayrıca burada doğru şekilde ayarlandığını kontrol etmek için bazı yararlı bilgiler: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard

27

Xcode sürüm notlarından :

Xcode 8, aps-ortam yetkilendirmesini derleme zamanında ön hazırlık profillerinden otomatik olarak kopyalamaz. Bu davranış kasıtlıdır. Bu yetkiyi kullanmak için proje düzenleyicisinin Yetenekler bölmesinde Anında Bildirimleri etkinleştirin veya yetkiyi yetkiler dosyanıza manuel olarak ekleyin. (28076333)

Bu büyük bir değişikliktir, çünkü aps-ortam yetkisinin plist gerektirmemesi her zaman oldukça tuhaftır, ancak diğerlerinin gerektirdiği.

"Beni Düzelt" e körü körüne basmak istemeyenler ve şu anda bir yetki dosyası olmayanlar için, bu sadece projenizin Derleme Ayarlarında "Kod İmzalama Yetkileri" altında referans verilen bir plist dosyasıdır.


1
Bu alıntıyı bağlantılı notlarda bulamadım!
Iulian Onofrei

Yorumuma kimin olumlu oy verdiğini ve neyin yanlış olduğunu bilmiyorum ama şimdi bulabilirim.
Iulian Onofrei

13

Xcode 8 ile geçen bir günlük mücadelenin ardından, aps-environmentgeliştirmenin neden hata ayıklama yapılarımıza EKLENMEDİĞİNİ anlayamadık . Yeni Yeteneği ETKİNLEŞTİRDİĞİMİZ ve yetki dosyası mevcut olmasına rağmen, yerleşik uygulamada hata ayıklama testi için yetkiler bölümünde eksikti. Sorun, yetkilendirme dosyasının, Hata Ayıklama Yetkileri için Xcode Derleme Ayarlarında HERHANGİ SDK için ayarlanması gerekmesidir.

ekran görüntüsü


DebugAnahtar için bir değer ayarlamakla Debug> Any SDKbiri için ayarlamak arasında herhangi bir fark olduğunu sanmıyorum , çünkü ikincisi belirli bir SDK için değeri geçersiz kılmak için kullanılır.
Iulian Onofrei

Benim için çözüm bu
Himanth

Bütün sabah bununla mücadele ettikten sonra benim de yaşadığım sorun buydu. Yetenekleri değiştirmek, ön hazırlık profilleri oluşturmak, bunların hiçbiri işe yaramadı. Bu yaptı.
Dave S

bu hala bazı durumlarda Xcode 8.3.3'te geçerli bir çözüm
dan

Keşke bunu milyonlarca kez oylayabilseydim. Bir haftadır mücadele ediyorum ve çözüm buydu. Dosya yolunu sadece en üstteki Kod İmzalama Yetkilerine yazmak yeterli değildi, "Herhangi bir SDK" bölümünde de yapılması gerekiyordu. Bunu benim için çözmenin anahtarı buydu.
Robert Bentley

7

Aynı e-postayı Apple'dan XCode 7.3.1 kullanarak aldım. Sorunu çözmek için yaptığım şey şuydu:

  1. Yetenekler> altında, @Bruce Tsai yanıtında belirtildiği gibi PUSH bildirimini AÇIK olarak ayarlayın.
  2. Build-Settings> Code Signing> Code Signing Identity altında, görüntüde gösterildiği gibi hata ayıklama için geliştirici sertifikasını ve yayın için dağıtım sertifikasını ayarlayın:

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin


Merhaba, Yetenekler'de Yetenekler alamıyorum> PUSH bildirimini ayarla
Anuj

@Anuj, Xcode'unuzda olması gereken yere bir ekran görüntüsü ekledim.
Ruben

5

Firebase çerçevelerini kullanıyorsanız ve anlık bildirimleri kullanmıyorsanız iki çözüm vardır 1. her ikili program yüklediğinizde tüm ekibinize gönderilen 'sorun' mesajını kabul edin. Bildirimleri gerçekten kullanmadığınız sürece, bu uyarıyı göz ardı edebilirsiniz. veya 2. şunu yapın : https://stackoverflow.com/a/46802075/7529450 . Bu, can sıkıcı e-posta bildirimini kaldıracak ve ayrıca bir gönderim olarak kabul edilecektir.


4

Otomatik olarak imzalamayı yönet benim için kapalıydı

Otomatik olarak imzalamayı yönet benim için kapalıydı, kontrol ettim ve benim için iyi çalışıyorum.


3

Xcode 9'u kullanma push Bildirimleri etkinleştirildi.

Anında Bildirim özelliklerini devre dışı bırakmayı / yeniden etkinleştirmeyi denedim . (çalışmadı)

İmzalamayı otomatik olarak yönetmeyi devre dışı bırakmayı / yeniden etkinleştirmeyi denedim . (çalışmadı)

Temel hazırlık profillerimi silmem ve yeniden eklemem gerektiği ortaya çıktı. ( nasıl yapılacağına bakın ) Servislerden sonra imzalamayı otomatik olarak yönet özelliğini devre dışı bırakmanız / yeniden etkinleştirmeniz gerekebilir .


2

Benim için sorun, iki yetki dosyası olmasından kaynaklanıyordu: Entitlements-Debug.plistve Entitlements-Release.plist. Ve bunlardan sadece biri (Hata Ayıklama) içinde gerekli ayarlara sahiptir.

Derleme Ayarları> İmzalama> Kod İmzalama Yetkilerinin birden çok değerini tek bir değerle değiştirmek MyAppName/MyAppName.entitlementsve ardından Yetenekler> Anında Bildirimler değiştiriciyi yeniden etkinleştirmek benim için hile yaptı.

Umarım yardımcı olur.


0

İşe yarayan bir seçenek daha: kaynağını AppName/Entitlements-Debug.plistiçine kopyalayıp yapıştırmak AppName/Entitlements-Release.plist.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.