Bagaimana cara memperbaiki "tidak ditemukan string hak 'aps-environment' untuk aplikasi" di Xcode 4.3?

153

Saya sudah berusaha sangat keras untuk membuat aplikasi iOS sederhana sederhana yang dapat menerima pemberitahuan push. Satu-satunya alasan saya melakukan ini adalah untuk menetapkan prosedur bagi beberapa anggota tim lain untuk digunakan, dan belum dapat menemukan versi terbaru dari instruksi tersebut di tempat lain di web. Toko kami cukup baru di iOS dev, saya pribadi sama sekali tidak berpengalaman dengan dev dan Xcode iOS. Saya telah menemukan puluhan tutorial, artikel, dan posting masalah dari Apple dan di tempat lain dan saya merasa seperti saya mungkin hampir sampai ...

Di sinilah saya harus (perhatikan saya menggunakan Xcode 4.3 dan awalnya mencoba untuk menyebarkan hanya ke iOS 5.1, dan saya mengumpulkan bahwa beberapa hal mungkin telah berubah baru-baru ini vs versi Xcode sebelumnya, tetapi sekali lagi saya baru untuk semua ini - dan menemukannya benar-benar membingungkan dan berbelit-belit):

1) Saya punya profil penyediaan di iPhone saya yang memiliki Push diaktifkan

2) Dalam proyek Xcode pengujian saya, saya telah mendapatkan profil penyediaan yang dipilih sebagai identitas penandatanganan (dalam Pengaturan Bangun> Penandatanganan Kode)

masukkan deskripsi gambar di sini

3) Saya memiliki pengidentifikasi bundel saya di bawah Ringkasan dan Info> Properti Target iOS Kustom diatur dengan benar * (Saya pikir ??)

4) Saya punya registerForRemoteNotificationTypes yang dipanggil dalam delegasi saya didFinishLaunchingWithOptions

5) Saya mendapatkan didRegisterForRemoteNotificationsWithDeviceToken dan didFailToRegisterForRemoteNotificationsWithError di delegasi saya, mengatur untuk mencatat token perangkat atau kesalahan masing-masing

6) Saya telah mengaktifkan Aktifkan Hak yang diperiksa di bawah Ringkasan.

7) Tepat di bawah ini, File Entitlements yang dipilih adalah Tinker6 (nama proyek pengujian saya), yang dihasilkan secara otomatis ketika saya memeriksa Enable Entitlements.

8) Dalam file Tinker6.entitlements saya mendapatkan yang berikut (yang saya kumpulkan benar berdasarkan beberapa posting berbeda di seluruh web, tetapi yang saya tidak dapat menemukan sesuatu yang pasti dari Apple itu sendiri):

masukkan deskripsi gambar di sini

Diperbarui

9) Juga, saya telah mencoba semuanya tanpa file hak, dan pada dasarnya mendapatkan hasil yang sama.

10) Konten file mobileprovision saya mencakup hak dengan benar (Saya telah mengacak nomor dan domain tetapi secara struktural sama):

<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
    <string>12355456A7.*</string>
</array>

/ akhiri pembaruan

Ketika saya mencoba menjalankan ini di perangkat saya, saya mendapatkan kesalahan berikut dalam output Xcode:

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: 
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' 
entitlement string found for application" UserInfo=0x24a3b0 
{NSLocalizedDescription=no valid 'aps-environment' entitlement string 
found for application}

Saya sudah mencoba mengatur get-task-allow to NO, aps-environment to production, keempat kemungkinan kombinasi, hal yang sama.

Bagaimana saya bisa melewati ini? Di mana dokumentasi definitif tentang ini?

- Latar belakang lebih lanjut mengikuti -

* Sejauh bundel id, saya masih tidak jelas tentang bagaimana ini harus ditetapkan dalam kaitannya dengan Id Aplikasi dan Id Profil dalam profil Penyediaan. Di portal Provisioning di bawah App Id, saya punya ini (lagi-lagi, angka dan domain teracak):

masukkan deskripsi gambar di sini

Dan bundel id dua tempat diatur saya punya ini:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Saya sama sekali tidak yakin ini benar atau apakah satu atau keduanya harus disetel ke 12355456A7.com.wh whatever.tinker, meskipun saya sudah mencoba yang sebelumnya dalam proses tanpa hasil ...

Catatan saya menyadari ada banyak posting dengan judul yang serupa, namun semuanya tampaknya ketinggalan zaman berdasarkan nama file dan sebagainya yang diberikan, dan kenyataannya tidak ada solusi yang tampaknya berguna. Saya berharap tingkat detail yang lebih besar yang saya berikan akan menjamin respons kualitas. Saya mungkin akan memberikan hadiah sesegera mungkin dan jika Anda memberikan jawaban berkualitas tinggi yang mengarah ke solusi, saya akan memberi Anda hadiah itu serta mempromosikan jawaban Anda melalui twitter dan blog saya. Terutama jika Anda memasang posting yang benar-benar bagus "di sini adalah 500 langkah tepat yang Anda butuhkan untuk mendapatkan aplikasi push notification sederhana yang berfungsi termasuk penyediaan dan apa pun yang lain" artikel di blog Anda atau apa pun.

jwl
sumber

Jawaban:

94

Jika Anda membuat profil penyediaan Anda sebelum mengkonfigurasi app IDdorongan, cobalah untuk membuat ulang profil penyediaan.

iOS Provisioning Portal -> Provisioning -> Cert Anda -> EDIT -> Edit -> Unduh provisi baru

Bekerja untukku. Sekarang saya bisa menggunakan push.

elp
sumber
dapatkah Anda lebih eksplisit mengenai apa sebenarnya yang dimaksud dengan "regenerasi profil penyediaan"? Apakah ini langkah di XCode, di Provisioning Portal, di mana? Terima kasih!
jwl
2
Di portal. Cukup tambahkan atau hapus perangkat dan ketentuan Anda akan dihasilkan. Setelah itu, klik dua kali dan pasang di gantungan kunci Anda.
elp
maaf jika saya padat, tetapi tambahkan / hapus di bawah Perangkat? Atau di suatu tempat di bawah Profil Penyedia sebenarnya yang dimaksud, dan jika demikian tepatnya di mana?
jwl
Menambah atau menghapus perangkat adalah trik untuk membuat ulang penyediaan Anda. Anda perlu membuat ulang satu untuk menggunakan pemberitahuan push, karena itu terkait dengan id aplikasi dan sertifikat push ..
elp
69

Pertama-tama, Anda tidak memerlukan file kepemilikan kecuali Anda menambahkan pasangan kunci / nilai khusus yang tidak ada dalam profil penyediaan. Saat aplikasi Anda dibuat, hak apa pun dari profil penyediaan akan disalin ke aplikasi.

Mengingat Anda masih melihat pesan kesalahan tentang hak yang hilang, saya hanya bisa berasumsi bahwa opsi penandatanganan kode tidak benar dalam pengaturan build.

Anda perlu memastikan profil yang benar dipilih untuk konfigurasi "Debug", dan agar aman, Anda telah memilih profil yang benar untuk "Debug" dan simpul-anak yang berlabel "Any iOS SDK":

masukkan deskripsi gambar di sini

Meskipun tangkapan layar ini menunjukkan profil "Pengembang Otomatis" yang dipilih, pilih profil penyediaan tepat yang Anda inginkan dari drop down, hanya untuk tujuan pengujian. Bisa jadi Xcode secara otomatis memilih profil yang berbeda dari yang Anda inginkan.

Pastikan juga untuk melakukan build bersih, hapus aplikasi sepenuhnya dari perangkat Anda, dll. Ini hanya untuk memastikan Anda tidak memiliki fluff lama yang berkeliaran.

Mike Weller
sumber
Per # 2 di posting saya, sudah diatur dengan benar saya pikir, meskipun saya telah menambahkan screenshot klarifikasi untuk memverifikasi. Saya juga telah mencoba menghapus aplikasi sepenuhnya dan meninggalkannya selama 2 hari per rekomendasi yang saya lihat di suatu tempat yang membutuhkan satu hari untuk mendapatkan info untuk direset (ya, saya pegang sedotan !?). Tetapi ketika Anda mengatakan "Anda harus memastikan profil yang benar dipilih untuk konfigurasi" Debug "" apa sebenarnya yang Anda maksud - di mana saya memilih itu?
jwl
Jika Anda mengklik bagian "Pengembang iPhone", atau apa pun yang ditetapkan sebagai nilai saat ini, Anda akan melihat dropdown semua profil yang disediakan Xcode. Pastikan yang benar dipilih, atau item "Pengembang Otomatis" memilih yang benar. Dropdown akan menunjukkan segalanya.
Mike Weller
Dan apakah Anda yakin memiliki profil penyediaan terbaru? Mungkinkah Anda memiliki versi lama, dari sebelum push diaktifkan?
Mike Weller
2
Ya saya percaya begitu. Apa yang telah saya lakukan untuk mendapatkan profil penyediaan baru adalah, di Xcode Organizer, menghapus profil dari Perpustakaan dan dari perangkat, dan kemudian kembali pada layar Perpustakaan, klik Refresh. Ini menariknya kembali dari Portal Penyediaan. Saya kemudian menambahkan ini ke perangkat. Dan seperti yang ditunjukkan di atas, konten XML file isep mobileprovision menunjukkan hak yang benar
jwl
3
Ach, maaf. Perlu ada suatu -sebelum jalan: codesign -d --entitlements - /path/to/my.app. Saat ini juga layak untuk memeriksa ulang apakah Anda berada di direktori Debug-iphoneos, karena "Show In Finder" kadang-kadang dapat membawa Anda ke tempat yang salah.
Mike Weller
64

Saya telah menghadapi masalah ini dalam Xcode 8. Anda harus mengaktifkan Target—> kemampuan—> push notification. Periksa tangkapan layar.

masukkan deskripsi gambar di sini

DipakSonara
sumber
1
Ini membantu saya !!!! Cukup klik tombol ... selesaikan masalah saya yang saya debug selama berjam-jam ... Xcode8, juga.
Veck Hsiao
3
OMG terima kasih! Ayo Apple, beri kami pesan kesalahan yang lebih masuk akal!
Ferran Maylinch
Xcode 8 mematikan Pemberitahuan push untuk aplikasi saya, jadi solusi ini berfungsi.
Kevin
1
Terima kasih, saya harus melakukan langkah-langkah pengaturan lainnya 3 kali sebelum saya menemukan ini. Saya merasa seperti orang idiot, tetapi juga alatnya jelek karena membiarkan ini menjadi masalah.
Collin Flynn
kamu menyelamatkan hariku, sobat!
oskarko
47

Cara termudah adalah melakukan ini dari akun Anda dengan Xcode:

Kepala Xcode -> Preferensi -> Pilih Tab Akun -> Lihat Detail -> Tekan tombol segarkan di kiri bawah -> Selesai.

Bangun lagi dan itu akan berhasil.

ooxio
sumber
19

Ok, saya menghadapi masalah sebelumnya. Karena push notification memerlukan implementasi di sisi server, bagi saya membuat ulang profil bukanlah pilihan. Jadi saya menemukan solusi ini TANPA membuat profil penyediaan baru.

Xcode tidak memilih profil penyediaan yang benar dengan benar meskipun kami memilihnya dengan benar.

Pertama pergi ke organizer. Pada tab Perangkat, Menyediakan profil dari daftar Perpustakaan, pilih profil yang dimaksudkan yang ingin kami gunakan. Klik kanan padanya dan kemudian "Reveal Profile in Finder".

masukkan deskripsi gambar di sini

Profil yang benar akan dipilih di jendela Finder yang terbuka. Catat namanya.

masukkan deskripsi gambar di sini

Sekarang pergi ke Xcode> Log Navigator. Pilih filter untuk "Semua" dan "Semua Pesan". Sekarang di fase terakhir (Bangun Target) lihat langkah yang disebut "ProcessProductPackaging" perluas itu. Perhatikan nama profil penyediaan. Mereka seharusnya TIDAK cocok jika Anda memiliki kesalahan. masukkan deskripsi gambar di sini

Sekarang di jendela Opened Finder hapus profil penyedia nakal yang Xcode gunakan. Sekarang bangun lagi. Kesalahan harus diatasi. Jika tidak, ulangi proses untuk menemukan profil jahat lainnya untuk menghapusnya.

Semoga ini membantu.

Maks
sumber
Ini adalah kesalahan saya tetapi memperbaikinya menggunakan metode ini. Saya secara tidak sengaja memasukkan kotak info ke pengenal yang berbeda dari yang saya hasilkan dengan sertifikat.
JavaCoderEx
18

Jawabannya adalah: mulai dari awal, lakukan semuanya sama tetapi buat profil penyediaan baru, dan instal. Itu berhasil. Memeriksa semua detail (hak dalam ketentuan seluler) terlihat persis sama dengan semua yang ada di pertanyaan saya di sini. Tapi sekarang berhasil. Apple: WAT?

Tentu saja, sudah jelas untuk melakukan ini jika memungkinkan untuk menghapus profil penyediaan. Tapi karena itu tidak mungkin, saya tidak ingin mengacaukan tim kami dengan banyak profil pengujian. Tetap saja, akhirnya kehilangan kesabaran dan tetap mencobanya, dan akhirnya berhasil. Apa saja.

jwl
sumber
Membuat profil baru dan "mengotori" yang lama seperti yang dikatakan dalam pertanyaan SO lainnya ini berhasil bagi saya: stackoverflow.com/questions/5681172/…
scurioni
Yang harus saya lakukan adalah menghapus profil penyediaan yang ada dari portal dan membuatnya kembali. Anda dapat menghapus profil sekarang setelah pembaruan sehingga tidak perlu membuat id aplikasi baru.
odyth
Profil penyediaan baru dengan id aplikasi dan sertifikat distribusi yang sama memperbaiki masalah bagi saya. +1 :)
Azik Abdullah
18

Hapus profil penyediaan sebelumnya dari XCode di Penyelenggara.

Kemudian, buat profil penyediaan baru untuk bundel id yang sama di portal penyediaan iOS (setelah Anda mengaktifkan dorongan)

Impor profil penyediaan baru di XCode, atur di pengaturan pembuatan aplikasi Anda.

Bangun, jalankan, itu bekerja.

Saya baru melakukannya.

Butuh saya 10 menit dari kesalahan untuk sukses.

pengguna1006117
sumber
Ini juga bekerja untuk saya. Mengedit profil penyediaan yang lama dan mengunduh tidak berhasil untuk saya. Terima kasih!
Prageeth
Sebagai tambahan yang bermanfaat, alih-alih mendapatkan profil penyediaan yang baru, saya hanya dapat menghapus yang lama
ritmatter
1
Saya sangat merekomendasikan untuk tidak melakukannya dengan tangan. Gunakan github.com/fastlane/PEM .
fatuhoku
16

XCode 6.1.1, dan beberapa akun pengembang apel

Jawaban lain untuk campuran yang sudah cukup komprehensif ini: Saya menemukan masalah ini lagi hari ini, dan kali ini karena saya mempunyai banyak akun apel. Saya perlu menambahkan akun pengembang kedua di XCode> Preferensi> Akun> +

Pastikan Kemampuan Push Notification dalam keadaan ON

Selanjutnya saya harus benar-benar secara eksplisit mengaktifkan Pembelian Dalam Aplikasi dalam aplikasi (saya tidak perlu melakukan ini sebelumnya). XCode> (jendela aplikasi)> Target> Kemampuan> Pembelian Dalam Aplikasi AKTIF (dan pada tahap ini saya diberi opsi untuk memilih sertifikat yang benar)

Perhatikan bahwa saya telah menambahkan sertifikat Push enabled dengan mengklik dua kali di Finder.

masukkan deskripsi gambar di sini

keris
sumber
Sedang memutar kepala saya tentang hal ini, saya kira ketika saya beralih ke Xcode 8 beta mematikan saklar push notification saya atau sesuatu. Terima kasih
inVINCEable
Terima kasih, ini sebabnya saya punya masalah ini. ID aplikasi saya diaktifkan untuk pembelian dalam aplikasi, game-center dll, tetapi dalam Xcode / kemampuan mereka semua dimatikan sebelumnya, tidak ada masalah. Sejak diperbarui ke Xcode 8, saya mengalami masalah ini. Setelah mengaktifkan IAP dan game center di Xcode, masalahnya hilang!
Ethan Long
11

(Xcode 5) Nah, setelah menghabiskan satu jam saya menyelesaikan masalah saya. Bahkan jika Anda membuat kembali file penyediaan di Xcode 5, Anda harus memperbarui akun secara manual. Saya hanya mengubah file provisi di tab Organizer yang tidak berfungsi, Xcode terus membangun dengan file provisi yang lama.

Jadi pergilah ke

Xcode> Preferensi> Akun> Lihat Detail (Pilih akun Anda)

Kemudian segarkan file penyediaan Anda.

Ömer Faruk Almali
sumber
7

Masalah saya hanyalah saya menandatangani dengan profil penyediaan wildcard yang dikelola Xcode.

Setelah saya membuat profil khusus aplikasi (dan mengunduhnya, klik dua kali, dan memastikan Pengaturan Bangun saya menyebutnya), saya berhasil menerima token perangkat APNS.

Graham Perks
sumber
Saya punya masalah ini juga. Xcode 5 cukup bagus untuk memperbarui profil penyediaan. Saya menambahkan layanan APNS nanti dalam pengembangan. Anda harus memastikan bahwa poster di atas menunjukkan bahwa profil penyediaan Anda sebenarnya adalah profil yang unik untuk aplikasi yang sedang Anda kerjakan dan bukan yang asli.
Michael
@Michael, bagaimana Anda memastikan ini? Saya telah mencoba mengubahnya di pengaturan build saya (di bawah Code Signing), yang saat ini tidak diatur. Ketika saya memilih profil yang benar dan membangun, muncul dengan kesalahan dan kemudian kembali ke profil penyediaan wildcard.
Ian Jamieson
@ apakah kesalahan apa yang Anda dapatkan? Apakah Anda yakin itu adalah profil yang valid?
Michael
Ah, saya sudah mengurutkannya, saya perlu mengunduh kembali sertifikat yang benar ke Mac saya. Itu tampaknya telah melakukan trik. Terima kasih.
Ian Jamieson
Senang mendengarnya. Itulah yang biasanya saya lakukan ketika pengaturan tampaknya benar. Ulangi semua sertifikat. Tampaknya masalah ini lebih sering daripada tidak.
Michael
6

Saya memiliki masalah yang sama dengan orang lain dan mencoba semua trik di atas, tidak ada yang berhasil. Saya bahkan menghapus dan mulai segar dengan akun pengembang yang berbeda.

Apa yang berhasil bagi saya pada akhirnya adalah

  1. Lakukan seperti yang disarankan di atas dan buat ID Aplikasi
  2. Kemudian buat profil penyediaan
  3. JANGAN gunakan profil wildcard tim (dikelola oleh xcode one) di bagian pengembangan ketentuan. Anda harus membuat yang terpisah menggunakan ID aplikasi yang telah Anda aktifkan notifikasi push. Dengan cara ini saat Anda mengembangkannya, fungsi push notification akan tertanam di dalamnya.

Saya tidak tahu apakah Anda dapat mengaktifkannya untuk aplikasi wildcard, tetapi setelah mencoba setidaknya 12 saran berbeda dan kehilangan beberapa hari saya harap ini membantu seseorang

Michael Ellams
sumber
2
Tapi ini tidak menambah jawaban yang ada, yang sudah memberikan saran ini. Jelas aplikasi push membutuhkan profilnya sendiri; dokumennya cukup jelas bahwa profil wildcard tidak dapat digunakan untuk aplikasi apa pun yang membutuhkan hak khusus.
matt
1
Saya telah melakukan ini, tetapi aplikasi saya hanya akan pernah memilih profil penyediaan wildcard, saya tidak bisa memaksanya untuk memilih satu dengan pemberitahuan push diaktifkan.
Ian Jamieson
3

Anda menyebutkan profil penyediaan tetapi saya tidak melihat penyebutan Profil Push Apple.

Untuk menggunakan Push, Anda harus memiliki profil push (ada dua, satu untuk pengembangan dan satu untuk rilis). Setelah Anda membuatnya, Anda harus memastikannya berisi sertifikat yang relevan (lihat bagian EDIT di bawah).

Ini adalah tutorial yang sangat baik yang akan memandu Anda melalui semua langkah:

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

Saya, atau siapa pun, akan butuh waktu berjam-jam untuk menulis jawaban terperinci yang menyeluruh seperti tutorial ini, jadi saya tidak akan berusaha, atau mengklaim karunia ketika tutorial ini sudah ada.

PS Saya yakin Anda tidak perlu hak lagi, ini adalah warisan.

EDIT: Anda juga harus memeriksa Anda memiliki profil yang diperlukan pada perangkat - pergi ke pengaturan, kemudian umum, profil, periksa profil Anda terdaftar, terutama profil push tentu saja. Anda juga dapat memeriksa ini dari bagian Organizer XCode. Dalam Penyelenggara ada dua bagian yang mengatakan Profil Penyedia - satu di bagian kiri atas di Perpustakaan (ini adalah profil dalam XCode yang Anda gunakan untuk menandatangani dll.) Anda juga akan melihat panggilan bagian Profil Penyedia untuk perangkat yang terhubung, ini adalah profil yang diinstal pada handset. Jika Anda tidak menginstalnya di handset, Anda dapat mengunduhnya dari situs web portal penyedia, lalu klik tombol Tambah di bagian bawah jendela Organizer.

Sementara di portal penyediaan Anda juga harus memeriksa bahwa Apple Push Profile menyertakan sertifikat: - klik Provisioning di menu sebelah kiri - Anda akan melihat daftar profil Anda, pilih untuk MENGEDIT profil push Apple - Anda akan melihat bagian sertifikat, dengan daftar pengembang atau penguji dll. Anda miliki di proyek Anda, pastikan kotak centang dicentang untuk mereka. - Anda juga akan melihat bagian perangkat, pastikan perangkat yang Anda uji telah ditambahkan.

Jika Anda memiliki profil lama di XCode atau pada perangkat hapus mereka dan unduh / menyegarkan / instal semua profil baru dari portal penyediaan

Gruntcakes
sumber
Jika hak adalah hal warisan maka mengapa saya menerima pesan yang mengeluhkan tidak ada hak? Saya sudah mengikuti tutorial yang terhubung ke surat itu tanpa hasil ... terima kasih.
jwl
Juga, saya telah menambahkan beberapa info tentang file mobileprovision yang sebenarnya yang dapat berguna.
jwl
itu benar, saya bahkan tidak mengatur .entitements untuk mendorong pemberitahuan. Satu hal yang membuat saya tersandung ketika saya melakukannya adalah bahwa saya perlu mengunduh mobileprovision secara manual, kemudian pergi untuk membangun pengaturan dan mengubah identitas penandatanganan untuk mencocokkan yang baru saja diunduh, dalam kasus saya, tampaknya Xcode memilih mobileprovision kartu liar.
X Slash
Saya juga mendapat pesan kesalahan tentang hak beberapa waktu lalu, ini adalah herring merah, lihat respons Mike Wellers, itulah yang saya lakukan dalam kasus saya.
Gruntcakes
Saya telah memperbarui jawabannya dengan beberapa hal untuk Anda periksa.
Gruntcakes
2

Lari ke masalah yang sama ini sendiri. Bagi saya, masalahnya adalah bahwa nama produk saya ($ TARGET_NAME) tidak dikapitalisasi dengan cara yang sama seperti yang disajikan dalam sertifikat yang diberikan oleh apel. Sebagai contoh, saya punya com.companyid.APNDemo sedangkan sertifikat Apple menggunakan com.companyid.apndemo.

Saya mengubah target saya menjadi huruf kecil dan berhasil. Catatan: Petunjuk bagi saya adalah pengaturan pemberian kode di Pengaturan Bangun ditetapkan ke sertifikat pengembang default saya; bukan profil penyediaan APNTest.

David Carrico
sumber
1

Banyak jawaban di atas benar. Namun, tampaknya ada lebih dari satu kemungkinan kesalahan saat berhadapan dengan ini.

Yang saya miliki adalah masalah kapitalisasi dengan ID Aplikasi saya. ID Aplikasi saya untuk beberapa alasan tidak dikapitalisasi tetapi aplikasi saya. Setelah saya membuat ulang ID Aplikasi dengan huruf besar yang benar, semuanya bekerja dengan lancar. Semoga ini membantu. Frustasi sekali.

PS jika masih tidak berhasil, cobalah mengedit Kode Identitas Penandatanganan secara manual dengan "edit". Ubah baris kedua dengan nama nama profil penyediaan yang benar.

matrinox
sumber
1

Butuh waktu berjam-jam untuk menyelesaikannya. Mengingat bahwa seseorang menggunakan skrip khusus untuk menandatangani dan mengemas sementara yang lain menggunakan xcode sendiri, hanya ada satu cara untuk memeriksa apa yang berakhir di aplikasi Anda. Dump hak Anda dengan

codesign --display --entitlements :- path/to/MyApp.app

dan periksa aps-environmentdan application-identifier.

makan
sumber
saya telah menghadapi masalah yang sama. Hanya ingin bertanya, apakah path-to-app adalah untuk aplikasi yang diinstal pada simulator?
Ajeet
tidak, ini adalah jalur aplikasi yang dikompilasi untuk perangkat aktual, di direktori build xcode.
dwery
1

Kesalahan ini dapat terjadi ketika sertifikat Anda telah kedaluwarsa.

Solusinya adalah dengan memperbarui sertifikat dan menandatangani aplikasi dengan itu.

vahotme
sumber
1

Anda perlu memastikan bahwa Anda memiliki dalam profil penyediaan Anda ( https://developer.apple.com/account/ios/profile/ ) profil Distribusi iOS.

Saat Anda mengunggah dari xCode ke App Store, pastikan Anda memiliki aps-environment di kepemilikan. Jika tidak, unduh dari Lihat Akun -> Lihat Detail -> Unduh Semua.

Nadav B
sumber
1

Saya punya masalah serupa. Saya telah terpental antara XCode 7 dan 8 karena berbagai alasan. Setelah Anda menggunakan 8 untuk membangun, Anda harus menggunakan 8. Saya cukup menggunakan Xcode 8 dan menerapkan beberapa perubahan yang disarankan di atas dan itu berhasil.

Brent Brookler
sumber
1

membuat ulang file sementara memperbaiki semua masalah saya.

Faris Muhammed
sumber
0

Tampaknya ada sesuatu yang aneh dengan hak 'otomatis' di Xcode 4.6.

Ada file Entitlement.plist untuk setiap SDK di:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

Solusi yang saya temukan adalah mengedit file ini dan menambahkan kunci aps-environment secara manual seperti:

<?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>
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

Kemudian, Xcode menghasilkan file Xcent yang benar, yang berisi kunci aps-environment di:

/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

Anda dapat menemukan di mana file Xcent Anda dibuat menggunakan Xcode's Log Navigator,
cari "ProcessProductPackaging".

Sayangnya, ini adalah satu-satunya cara yang saya temukan yang memperbaiki masalah ini .
(dan akhirnya bisa mendapatkan token push dengan benar sekarang)

Hanya ingin tahu apakah solusi lain yang lebih elegan tersedia.
Silakan lihat pertanyaan SO saya untuk detail lebih lanjut tentang itu:
Hak Xcode 4.6 otomatis tidak berfungsi - "no aps-environment valid"

AmitP
sumber
0

Sebelum menghapus dan membuat ulang AppID / Profil, pastikan Perpustakaan dan Perangkat Anda memiliki profil yang sama (dan benar) diinstal.

Saya mulai melihat kesalahan ini setelah bermigrasi ke komputer baru. Push telah berfungsi dengan benar sebelum migrasi.

Masalahnya adalah (duh) bahwa saya belum mengimpor profil ke pustaka Xcode pada mesin baru (di Organiser / Perangkat di Library-> Provisioning Profiles).

Bagian yang membingungkan adalah bahwa PERANGKAT sudah memiliki profil yang tepat dan mereka muncul seperti yang diharapkan dalam pengaturan build, jadi semuanya tampak benar di sana, tetapi PERPUSTAKAAN XCode tidak memilikinya, jadi itu menandatangani aplikasi dengan ... ?? ?

Rodin Lyasoff
sumber
0

Inilah yang diperbaiki untuk saya. (Saya sudah mencoba mengaktifkan / menonaktifkan kemampuan, membuat ulang profil penyediaan, dll).

Di tab Bangun Pengaturan , di Kepemilikan Penandatanganan Kode , file .entitlements saya tidak ditautkan untuk semua bagian. Setelah saya menambahkannya ke bagian Any SDK , kesalahan telah diatasi.

masukkan deskripsi gambar di sini

mogile_oli
sumber
0

Saya mencoba semua jawaban yang tercantum di sini tetapi tidak ada yang memecahkan masalah saya. Dalam kasus saya kesalahan ini adalah karena kesalahan konyol saya dalam pembuatan Appid. Saya menggunakan Wildcard App ID daripada menggunakan Explicit App ID yang menyebabkan masalah

Jika Anda ingin aplikasi menerima pemberitahuan jarak jauh (pemberitahuan push), maka Anda perlu menggunakan ID Aplikasi Eksplisit , seperti com.tutsplus.push , alih-alih com.tutsplus. *

Silakan temukan ScreenShot, masukkan deskripsi gambar di sini

arunjos007
sumber