Xcode 8 "hak aps-environment tidak ada dari tanda tangan aplikasi" saat dikirimkan

118

Saya memiliki aplikasi yang telah kami kirimkan beberapa versi dalam 6 bulan terakhir dan kami menggunakan APNS. Saya mendapat email berikut dari Apple setelah meningkatkan ke Xcode 8

Pengembang yang terhormat,

Kami telah menemukan satu atau beberapa masalah dengan pengiriman Anda baru-baru ini untuk APP_NAME. Pengiriman Anda berhasil, tetapi Anda mungkin ingin memperbaiki masalah berikut pada pengiriman Anda berikutnya:

Kepemilikan Notifikasi Push yang Hilang - Aplikasi Anda menyertakan API untuk layanan Notifikasi Push Apple, tetapi kepemilikan aps-environment tidak ada di tanda tangan aplikasi. Untuk mengatasi ini, pastikan ID Aplikasi Anda diaktifkan untuk pemberitahuan push di Portal Penyediaan. Kemudian, tanda tangani aplikasi Anda dengan profil penyediaan distribusi yang menyertakan hak aps-environment. Ini akan membuat tanda tangan yang benar, dan Anda dapat mengirim ulang aplikasi Anda. Lihat "Penyediaan dan Pengembangan" di Panduan Pemrograman Lokal dan Push Notification untuk informasi lebih lanjut. Jika aplikasi Anda tidak menggunakan layanan Pemberitahuan Push Apple, tidak ada tindakan yang diperlukan. Anda dapat menghapus API dari pengiriman selanjutnya untuk menghentikan peringatan ini. Jika Anda menggunakan kerangka pihak ketiga,

Setelah Anda memperbaiki masalahnya, Anda dapat menggunakan Xcode atau Application Loader untuk mengunggah biner baru ke iTunes Connect.

Salam,

Tim App Store

Yang aneh adalah saya pergi ke developer.apple.com -> Certificates, Identifiers & Profiles dan AppId saya masih mengaktifkan Push Notifications. Saya tidak melakukan sesuatu yang berbeda dari yang pernah saya lakukan, jadi saya ingin tahu jika pembaruan Xcode 8 merusak sesuatu. Ada ide?

BTW: Tautan yang mereka masukkan untuk Panduan Pemrograman Pemberitahuan Dorong rusak di email, jadi itu bukan pertanda baik.

Unome
sumber

Jawaban:

156

Sebenarnya sangat mudah. Untuk beberapa alasan itu dinonaktifkan pada Xcode 8 tetapi pergi ke Target -> Kapabilitas dan verifikasi Pemberitahuan Push semuanya benar pada tampilan itu. Bagi saya itu memiliki "Perbaiki Saya" Saya harus mengklik, dan voila.

Unome
sumber
4
Yang aneh tentang masalah ini bukanlah solusinya, itu adalah fakta bahwa pada Xcode 7 ini diaktifkan dan setelah peningkatan itu dinonaktifkan.
Unome
2
Saya juga harus masuk ke file hak dan mengubah nilai APS Environment menjadi 'produksi' karena itu disetel ke 'pengembangan' secara default saat dibuat.
Bek
61
Pasti ada beberapa orang bodoh yang dipekerjakan baru-baru ini di Apple .. Mengapa mereka kehilangan waktu pengembang dengan menonaktifkan hal-hal secara default dan secara implisit menetapkan nilai yang tidak pantas tanpa peringatan apa pun tentang itu. Saya kehilangan suatu hari dalam membuat profil, sertifikat, debugging, dan hal-hal mengganggu lainnya ..
Hristo Atanasov
3
Akhirnya! Konyol sekali, sulit sekali membuatnya berhasil. Saya telah menghapus & membuat ulang sertifikat / profil selama hampir 5 jam. Hal baiknya adalah saya dapat mengatakan bahwa saya sepenuhnya memahami apa itu certs / profiles / identifiers sekarang :) Terima kasih atas petunjuk ini.
Kamil Rykowski
4
@bek perhatikan bahwa Anda mungkin harus membiarkannya sebagai pengembangan. Itu akan diubah ke produksi secara otomatis setelah diunggah ke iTunes Connect.
Montdidier
84

Saya juga memiliki masalah yang sama, dan saya yakin Pemberitahuan push dinonaktifkan secara default di Xcode8. Saya tidak menyadarinya. Berhati-hatilah.

kemampuan

Bruce Tsai
sumber
Dapatkah Anda memberi tahu saya mengapa saya tidak memiliki bagian pemberitahuan push di akun saya?
Anuj
28

Ada perubahan di Xcode 8, di mana hak Anda tidak lagi berasal dari Pengenal Aplikasi, tetapi dari kemampuan yang dipilih di target aplikasi Anda. Jadi, seperti Unome (OP) mengatakan, Anda harus memverifikasi bahwa Pemberitahuan Push dihidupkan.

Bagi saya, ini bukan tombol "Perbaiki Saya", tetapi saya memiliki dua file hak (satu untuk pengembangan dan satu untuk distribusi). Mengalihkan kapabilitas Push Notifications akan menambahkan aps-environmentkunci - dengan nilai development- ke file hak pengembangan, tetapi tidak akan menambahkannya ke file hak distribusi. Menyalin kunci yang sama ke distribusi berfungsi untuk menghilangkan email peringatan saat mengunggah ke iTunes Connect.

Untuk sebagian besar proyek, itu harus cukup untuk mengaktifkan Push Notifications, atau jika sudah aktif tetapi kuncinya tidak ada dalam hak, coba matikan dan hidupkan lagi.

timgcarlson
sumber
Ini adalah perahu tempat saya berada, kecuali bahwa apa pun yang saya tentukan di .entitlementsfile saya untuk konfigurasi / skema saat ini, itu selalu digunakan productionsebagai file aps-environment.
Albert Bori
toggling push Notificaition in Capabilities merusak Xcode 8 saya !!
djay
2
@AlbertBori Aneh, saya hanya bisa membuatnya untuk menunjukkan perkembangan, yang tidak masalah karena ketika diarsipkan, itu muncul sebagai production.
timgcarlson
6
@ metors Seharusnya tidak masalah jika nilainya adalah development. Ini akan diubah di ipa saat proyek diarsipkan.
timgcarlson
2
@timgcarlson Ini sebenarnya tidak terjadi selama pengarsipan. Itu terjadi selama pengiriman atau saat diekspor. Juga beberapa info berguna untuk memeriksa apakah disetel dengan benar di sini: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard
27

Dari catatan rilis Xcode :

Xcode 8 tidak secara otomatis menyalin hak aps-environment dari profil penyediaan pada waktu pembuatan. Perilaku ini disengaja. Untuk menggunakan hak ini, aktifkan Pemberitahuan Push di panel Kemampuan editor proyek, atau tambahkan hak secara manual ke file hak Anda. (28076333)

Ini adalah perubahan besar karena selalu cukup aneh bahwa hak aps-environment tidak memerlukan plist, tetapi banyak yang lain melakukannya.

Bagi Anda yang tidak ingin hanya menekan "Perbaiki Saya" dan saat ini tidak memiliki file hak, itu hanya file plist yang direferensikan dalam Pengaturan Build proyek Anda di bawah "Penandatanganan Kode"

mattyohe
sumber
1
Saya tidak bisa menemukan kutipan itu di catatan tertaut!
Iulian Onofrei
Saya tidak tahu siapa yang memberi suara positif pada komentar saya dan apa yang salah, tetapi saya juga dapat menemukannya sekarang.
Iulian Onofrei
13

Setelah seharian berjuang dengan Xcode 8 kami tidak dapat mengetahui mengapa aps-environmentpengembangan TIDAK ditambahkan ke build debug kami. Itu hilang dari bagian hak di aplikasi yang dibangun untuk pengujian debug ... meskipun kami telah MENGAKTIFKAN Kapabilitas baru dan file hak ada. Masalahnya adalah file hak harus disetel untuk SETIAP SDK di Xcode Build Settings untuk Debug Entitlements.

tangkapan layar

James L Harris
sumber
Saya tidak berpikir ada perbedaan antara menyetel nilai untuk Debugkunci dan menyetelnya untuk Debug> Any SDKsatu, karena yang terakhir digunakan untuk mengganti nilai untuk SDK tertentu.
Iulian Onofrei
Ini adalah solusi untuk saya
Himanth
Setelah berjuang dengan ini sepanjang pagi, inilah masalah yang saya alami juga. Toggling Capabilities, menghasilkan profil penyediaan, tidak ada yang berhasil. Ini berhasil.
Dave S
ini masih merupakan solusi yang valid dalam beberapa kasus pada Xcode 8.3.3
dan
Saya berharap saya dapat memberikan suara ini jutaan kali. Saya telah berjuang selama seminggu, dan inilah solusinya. Hanya mengetik path file ke dalam Code Signing Entitlements di bagian atas tidaklah cukup, harus dilakukan di bagian "Any SDK" juga. Ini adalah kunci untuk memecahkannya bagi saya.
Robert Bentley
7

Saya mendapat email yang sama dari Apple menggunakan XCode 7.3.1. Apa yang saya lakukan untuk memecahkan masalah tersebut adalah:

  1. Di bawah Capabilities> Setel notifikasi PUSH ON seperti yang dinyatakan dalam jawaban @Bruce Tsai.
  2. Di bawah Build-Settings> Code Signing> Code Signing Identity, atur sertifikat pengembang untuk debug dan sertifikat distribusi untuk rilis, seperti yang ditunjukkan pada gambar:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Ruben
sumber
Hai, Dalam Kapabilitas saya tidak mendapatkan Kapabilitas> Setel pemberitahuan PUSH
Anuj
@Anuj, saya menambahkan cuplikan layar yang seharusnya ada di Xcode Anda.
Ruben
5

Jika Anda menggunakan kerangka kerja Firebase dan tidak menggunakan pemberitahuan push, ada dua solusi 1. cukup tahan dengan pesan 'masalah' yang akan dikirim ke seluruh tim Anda setiap kali mengunggah biner. Aplikasi akan tetap diterima sebagai kiriman selama Anda tidak benar-benar menggunakan pemberitahuan, Anda dapat mengabaikan peringatan tersebut. atau 2. lakukan ini: https://stackoverflow.com/a/46802075/7529450 . Ini akan menghapus pemberitahuan email yang mengganggu dan juga diterima sebagai kiriman.

Aaron Halvorsen
sumber
4

Kelola penandatanganan secara otomatis tidak aktif untuk saya

Secara otomatis mengelola penandatanganan tidak aktif untuk saya, saya memeriksa dan berfungsi dengan baik untuk saya.

Shemeer M Ali
sumber
3

Menggunakan Xcode 9 push Notifications telah diaktifkan.

Saya mencoba menonaktifkan / mengaktifkan kembali kemampuan Pemberitahuan Push . (tidak berhasil)

Saya mencoba menonaktifkan / mengaktifkan kembali Kelola penandatanganan secara otomatis . (tidak berhasil)

Ternyata saya harus menghapus dan menambahkan kembali profil penyediaan saya. ( lihat di sini cara melakukannya ) Anda mungkin harus menonaktifkan / mengaktifkan kembali Kelola penandatanganan secara otomatis setelah lingkungan.

Aldracor
sumber
2

Bagi saya masalahnya karena ada dua file hak: Entitlements-Debug.plistdan Entitlements-Release.plist. Dan hanya satu dari mereka (Debug) yang membutuhkan pengaturan di dalamnya.

Mengubah beberapa nilai Build Settings> Signing> Code Signing Entitlements menjadi satu MyAppName/MyAppName.entitlementsdan kemudian mengaktifkan kembali Capabilities> Push Notifications switcher melakukan trik untuk saya.

Semoga membantu.

Alexander Zinchuk
sumber
0

Satu opsi lagi yang berhasil: salin-tempel sumber AppName/Entitlements-Debug.plistke AppName/Entitlements-Release.plist.

Alexander Zinchuk
sumber