Diritto di notifica push mancante


126

Ho un'app da inviare quando è stata respinta e ho ricevuto il messaggio

Diritto di notifica push mancante: l'app sembra registrarsi con il servizio di notifica push di Apple, ma i diritti della firma dell'app non includono il diritto "aps-environment". Se la tua app utilizza il servizio di notifica push di Apple, assicurati che l'ID app sia abilitato per la notifica push nel portale di provisioning e reinvia dopo aver firmato l'app con un profilo di provisioning di distribuzione che includa il diritto "aps-environment".

Ho controllato il mio provisiong ad hoc e lì ho trovato aps-environment e produzione tuttavia, quando apro il mio provisioning di distribuzione, non lo trovo.

È questa la causa di questo messaggio di errore e del rifiuto di Apple, come posso ripararlo?

Risposte:


80

Sì, questa è la causa del rifiuto dell'App Store. Se il tuo profilo di provisioning ad hoc ha la chiave aps-environment, significa che l'app è configurata correttamente nel Portale di provisioning di Apple. Tutto quello che devi fare è eliminare il profilo di distribuzione dell'App Store sul tuo computer locale, quindi riscaricare e installare il profilo di distribuzione dal Portale di provisioning. Questo nuovo dovrebbe contenere la chiave aps-environment.


Giusto per eliminare un po 'più di nebbia, questo afferma chiaramente che il "profilo di distribuzione DEVE contenere l'ambiente aps, ecc." E che quando apro il provisioning in un editor di testo, dovrei trovarlo lì ...
mirageservo

devo generare un nuovo certificato ssl, specialmente quando ho cambiato qualcosa dal mio profilo di distribuzione?
mirageservo,

2
No, non è necessario un nuovo certificato per sviluppatori. Quando hai abilitato la distribuzione per le notifiche push (cosa che devi aver fatto a un certo punto perché il tuo profilo ad hoc ha la chiave aps-environment), il portale di provisioning di iTunes genera un nuovo profilo di distribuzione di app store contenente la chiave aps-environment. Probabilmente hai appena scaricato e installato l'ultima versione.
tom

un'altra cosa prima che questa domanda arrivi alla galassia, devo ricompilare (ri-archiviare) l'IPA, poiché ci sarebbe un cambiamento nelle impostazioni di compilazione del progetto o posso distribuire direttamente l'app senza disturbare una ricompilazione?
mirageservo,

Devi ri-archiviare. Il profilo di provisioning associato all'app viene incorporato nel .ipa.
Tom,

43

Primo ID app

assicurarsi che la notifica push ID sia abilitata dal lato della produzione

come appare in figura

inserisci qui la descrizione dell'immagine

Secondo certificato

dalla sezione produzione crea due certificati con il tuo ID (notifica push abilitata)

App Store e certificato Ad Hoc

Certificato SSL (Sandbox) del servizio di notifica push di Apple

inserisci qui la descrizione dell'immagine

Profili di terzo provisioning

Dalla sezione Distribuzione crea il profilo dell'App Store con il tuo ID

Finalmente

durante il caricamento del cestino, è necessario verificare quale profilo di provisioning è stato utilizzato e disporre di numerosi diritti

inserisci qui la descrizione dell'immagine

questo in tutti i casi causa questo problema spero che questo ti sia utile


1
Questo è quello che mi mancava. Ho dovuto creare un nuovo profilo di provisioning nel sito degli sviluppatori Apple usando l'ID app con notifiche push. Con il nuovo profilo di provisioning, finalmente il diritto aps-environment è stato aggiunto alla mia app. Grazie!
M. Luisa Carrión,

38

In XCode 8 devi abilitare il push nella scheda Funzionalità sul tuo target, oltre a abilitare tutto sulle disposizioni e sui certificati: Xcode 8 "il diritto aps-environment manca dalla firma dell'app" al momento dell'invio

Il mio post sul blog su questo qui .


8
Questa è una Apple così classica. Due ore dopo aver inviato una build, inviano un messaggio di errore relativo a un problema che ho risolto da tempo (abilitando il servizio applicazione di notifica push nel portale Dev) e viene spiegato con un collegamento a un 404. Quindi si scopre che il vero problema è che non hanno migrato le mie impostazioni durante l'aggiornamento a una nuova versione del loro software (in cui sono bloccato). Ugh.
Rembrandt Q. Einstein,

3
Stessa storia qui. Abbiamo quasi liquidato il messaggio di errore come un bug Apple.
Vaiden,

23

Ho ricevuto questo messaggio per un motivo diverso: ho inviato un'app tramite Xcode senza prima creare un profilo di distribuzione dell'App Store specifico per l'app. Credo che Xcode utilizzi automaticamente un profilo App Store jolly se ne hai installato uno. Ma un'app utilizza le notifiche push richiede il proprio profilo.

La correzione consiste nel creare un nuovo profilo di distribuzione dell'App Store per l'app. Quindi lo scarichi, lo trascini su Xcode e modifichi il tuo progetto Impostazioni di costruzione> Firma codice> Rilascia per utilizzare il nuovo profilo.


11

A seguito della risposta data da @Vaiden, in Xcode 8 è possibile risolvere questo problema selezionando la destinazione e facendo clic su "Risolvi problema". Ovviamente, dovrai comunque impostare le notifiche push nel portale per gli sviluppatori Apple (puoi semplificare un po 'il processo utilizzando la nuova opzione "Gestisci automaticamente la firma", che ti risparmia il fastidio di scaricare i profili di provisioning).

Opzione Fix me


8

Per coloro che si imbattono in questo problema che utilizzano effettivamente le notifiche push nelle loro app:

I nostri push certs stavano per scadere, quindi abbiamo creato nuovi push / prod devts nel modo standard delineato da Apple (non entrerò nei dettagli qui, ci sono molte informazioni su tutto il web durante l'aggiornamento il tuo push certs per un altro anno di utilizzo).

Dopo averlo fatto, tuttavia, è emerso il problema in questa domanda. Indipendentemente da ciò che abbiamo fatto, abbiamo ricevuto questa e-mail da Apple dopo aver inviato la nostra app. Quando abbiamo verificato le impostazioni del nostro profilo di provisioning della distribuzione nel Centro membri di Apple, tutto sembrava a posto (Push era abilitato per il nostro ID app sia per prod / dev, e il nostro profilo di provisioning di distribuzione era ancora collegato a questo ID app, abbiamo letteralmente appena creato nuovi certificati push per un altro anno come da prassi standard).

Infine, questo è ciò che ha finito per risolverlo per me:

  1. Crea un nuovo profilo di provisioning di distribuzione che punta al tuo ID app (lascia intatto il tuo attuale)
  2. In Xcode, aggiorna i profili di provisioning tramite Impostazioni> Account> Seleziona il tuo account> Dettagli> Fai clic sull'icona di aggiornamento
  3. Crea manualmente un file plist di diritti per la tua app:
    • Menu File> Nuovo file ...
    • Seleziona iOS> Risorsa> Elenco proprietà
    • Denominare il nuovo file "foo.entitlements" (in genere "foo" è il nome di destinazione)
    • Fare clic sul (+) accanto a "File di diritti" per aggiungere un elemento di livello superiore (l'editor dell'elenco delle proprietà utilizzerà lo schema corretto a causa dell'estensione del file)
  4. Assicurati che questo file di diritti sia utilizzato nelle Impostazioni di costruzione del tuo target (Target> Impostazioni di costruzione> Cerca "Entitlement", in CODE_SIGN_ENTITLEMENTS imposta il percorso del file Entitlements che hai appena creato)
  5. Assicurati che il profilo di provisioning / l'identità della firma del codice nel Target sia impostato correttamente sul profilo di provisioning della distribuzione / l'identità della firma appropriati (questo dovrebbe essere ovvio)
  6. Non sono sicuro al 100% se ciò ha influito (non dovrebbe essere poiché le impostazioni Target hanno la precedenza sulle impostazioni del progetto, ma l'ho fatto comunque), assicurati che il profilo di provisioning del progetto / l'identità della firma corrispondano a quelli del Target
  7. Nel file delle autorizzazioni creato, fai clic con il pulsante destro del mouse sul file vuoto e seleziona "Mostra chiavi / valori non elaborati"
  8. Aggiungi una nuova voce al file dei diritti chiamata "aps-environment" e imposta il suo valore su "produzione"
  9. Una nota chiave, se in precedenza utilizzavi il diritto di accesso ai gruppi di portachiavi, ti consigliamo di aggiungere anche quella chiave qui perché per qualche motivo è stata cancellata per me quando lo facevo manualmente. Assicurati che il valore sia lo stesso del valore utilizzato nelle build precedenti (puoi trovare il valore trovando una build precedente in Organizer, tentando di inviare all'app store, seleziona il tuo team, quindi prima di inviare l'app tocca la freccia accanto al Stringa "(X) Entitlements" per espandere le autorizzazioni e vedere il valore della titolarità del gruppo di accesso al portachiavi.
  10. Archivia la tua app e prova a inviarla al punto di arrivare al pulsante "Invia" finale. Ora dovresti vedere che questa app è stata creata con il nuovo profilo di provisioning creato nel Centro membri. Annulla adesso.
  11. Torna al centro membri Apple ed elimina il nuovo profilo di provisioning creato nel passaggio 1.
  12. Torna in Xcode, aggiorna nuovamente l'elenco dei profili di provisioning ripetendo il passaggio 2.
  13. Ora archivia nuovamente la tua app e dovresti vedere che l'app è stata creata con il vecchio profilo di provisioning di distribuzione che volevi usare e che ha correttamente il diritto aps-environment. Invia e il gioco è fatto.

So che questo non è così dettagliato come dovrebbe essere come dovrebbe avere schermate, cercherò di aggiornarlo con schermate quando posso ma per il momento sono in una crisi del tempo in questo momento e volevo ottenere il jist di quello che ho fatto là fuori. C'è anche una probabilità molto probabile che alcuni o la maggior parte dei passaggi che ho delineato non siano necessari, li sto mettendo qui perché li ho fatti e potrebbero aver portato alla soluzione finale.


Grazie. # 8 per me era destinato allo sviluppo, che potrebbe essere il nostro problema.
ingaggio

Grazie mille, ho sprecato un'intera giornata con questo shittery, il passaggio n. 4 era il problema, per qualche motivo senza specificare CODE_SIGN_ENTITLEMENTS i diritti sono stati ignorati solo sul caricamento dell'app store.
Mark Kazakov,

5

controlla che il tuo ID app sia abilitato al push o meno su developer.apple.com nel portale di provisioning iOS Se non lo abiliti, configura il tuo certificato SSL push per il tuo ID app Scaricalo e Reinstalla nuovamente nel tuo portachiavi, quindi Scarica il profilo di distrubution installa nel tuo Liabrary Xcode


4

Stavo anche affrontando questo problema anche se non stavo usando le notifiche push nella mia app. Anche la creazione di un nuovo profilo di provisioning non ha funzionato per me.

1.Creare nuovi certificati nuovi solo per Ad hoc e App Store.

2. Quindi creare un profilo di distribuzione con questo certificato e integrare il profilo con Xcode.

Quindi build appena inviata con questo profilo approvato senza alcun avviso.


2
ho provato questo - non ha aiutato. ricevo ancora la cosa mancante delle notifiche push .. non uso le notifiche push!
Adam,

2

Nel mio caso, anche io ho creato un myapp.profile e l'ho impostato manualmente in xcode, e quando ho scelto "show in finder" e ho individuato embedded.mobileprovision e verificato per accertarmi che aps-environment fosse presente nel file, l'errore era ancora qui.

Sono quindi andato al centro per sviluppatori e ho scoperto che lo stato di XC: myapp.profile non è valido. L'ho aggiornato e installato XC: myapp.profile e ha funzionato bene.

Penso che xcode stia cercando di gestire il profilo e devi controllare il profilo di provisioning quando invii il tuo file binario per archiviarlo e assicurarti che sia quello corretto. E secondo altre risposte può essere causato per vari motivi, quindi può essere davvero fastidioso.

AGGIORNARE:

Dopo aver firmato con il profilo scaricato e confermato che aps-environmentera presente quando si tenta di inviare App Store, si dovrebbe essere in grado di modificare il profilo e l'entità di firma del codice in automatico e iOS Developer. Spero che possa essere migliorato in Xcode 7.


Ho controllato tutti i profili e anche XC: il profilo è aggiornato e non include alcuna chiave asp-environment lì ho ancora avuto lo stesso problema ancora e ancora. Qualsiasi aiuto sarà apprezzato. E sì, non ho bisogno di alcuna notifica push implementata nell'applicazione
iOSDev

Puoi assicurarti controllando il contenuto binario del profilo di provisioning e vedere se la stringa "aps-environment" è dentro o no per favore? Se è all'interno, devi trovare un modo per sbarazzartene, altrimenti devi assicurarti che il profilo sia quello con cui stai firmando la tua app. In entrambi i casi ci deve essere un problema.
superarts.org il

1
L'ho verificato due volte e provo a saperne di più ma senza fortuna. Non esiste una stringa del genere, ma dopo 2 giorni di ricerca e di tentativi, ho ottenuto una cosa conforme che questo problema è con Xcode 7 beta non con il mio codice :) Lo stesso build tramite Xcode 6.4 funziona perfettamente e non ci sono email da Apple che segnalano che problema quindi il problema è con Xcode 7 beta 4 non con codice o profilo.
iOSDev

2

Questo è ciò che l'ha risolto per me. (Avevo già provato ad attivare / disattivare le funzionalità, ricreando il profilo di provisioning, ecc.).

Nella scheda Impostazioni build , in Diritti firma codice , il mio file .entitlements non era un collegamento per tutte le sezioni. Una volta aggiunto alla sezione Any SDK, l'errore è stato risolto.

inserisci qui la descrizione dell'immagine


2

Per risolvere questo problema con un'app "espulsa" dall'Expo, sono andato alla scheda delle funzionalità, abilitato push e poi disabilitato di nuovo. Ciò ha rimosso l'impostazione 'entitlements' di APNS dal file .entitlements.


ho provato questo sul mio progetto "espulso", ma sto ancora ricevendo queste notifiche
webdevbyjoss,

1

Ho avuto lo stesso problema e la mia soluzione era quella di aggiungere il diritto alla notifica push da Target -> Funzionalità.


0

Questo mi è successo all'improvviso perché il profilo di distribuzione della mia app era scaduto. Xcode ha iniziato invece a utilizzare il profilo jolly, che non aveva abilitato il diritto di notifica push. Non ho ricevuto alcun avviso. La correzione è stata facile; Ho dovuto solo generare un altro profilo di distribuzione per la mia app nel Centro membri per sviluppatori Apple, scaricarlo e fare doppio clic per installare in Xcode.


0

Ci sono alcuni suggerimenti davvero validi qui.

Facendo riferimento all'ultima schermata fornita da Mina, dopo aver inizialmente archiviato la mia app, il profilo di provisioning menzionato durante il caricamento conteneva un carattere jolly (XC. *). Questo è sbagliato.

Ci sono voluti alcuni sforzi considerevoli per risolvere questo problema. Ho dovuto eseguire una combinazione dei suggerimenti forniti da Simon Woodside e Mina Fawzy.

Se disponi di certificati e profili di provisioning esistenti relativi al tuo progetto, ora sarebbe un buon momento per rimuoverli tutti a livello locale e revocarli tutti in remoto. Concediti un nuovo inizio.

Il suggerimento dettagliato di Mina Fawzy è eccellente. L'esecuzione del suggerimento di Mina, se eseguita correttamente, dovrebbe prendersi cura di te online.

Inserisci il suggerimento di Simone. Due cose che dovevo controllare all'interno del mio progetto. Utilizzando XCode, vai qui:

PROGETTO -> IMPOSTAZIONI DI COSTRUZIONE -> SEGNALAZIONE CODICE

Esaminare le proprietà Identità firma codice e Profilo di provisioning . Assicurati di impostare queste due proprietà su quella del nome del tuo progetto. Non consentire a XCode di selezionare automaticamente per te e non utilizzare alcune identità di firma del codice generico (ad esempio Iphone Developer).

Assicurati di poter effettivamente installare l'app sui tuoi dispositivi prima di decidere di archiviare.


0

Il problema più grande che ho dopo aver abilitato il Push Notificationda Capabilitiese rifacendo tutti i certificati è che il nome Target e il nome della cartella in cui è stato memorizzato il progetto era composto da 2 stringhe separate da spazio. Dopo aver rimosso lo spazio tutto ha funzionato bene!


1
La mia app non utilizza la notifica push ma continuo a ricevere questo avviso da Apple. Per favore, suggerisci
Chandni,

0

Ho avuto questo problema perché il mio file di diritti non era corretto a causa di precedenti modifiche manuali. Ho rimosso la sintassi della voce di autorizzazione formattata in modo errato e quindi ho potuto fare clic su "correggi" nella scheda delle funzionalità e Xcode ha aggiunto la titolarità al mio file.

Ecco un esempio di un file di diritti correttamente formattato (" Runner.entitlements"):

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>

0

IDEA FIX Ehi ragazzi, quindi ho creato un'app e non ho usato alcuna funzione di notifica push ma ho ancora ricevuto un'email. Dopo aver verificato i certificati, gli ID e i profili dell'identificatore del bundle che ho usato per creare la mia app in Apple Store Connect nel portale degli sviluppatori di Apple, mi sono reso conto che le notifiche push erano attive.

Quello che devi fare è:

vai al sito di accesso degli sviluppatori Apple dove puoi gestire i tuoi certificati anche 2. seleziona la scheda "Certificati, ID e profili" sul lato destro 3. ora seleziona "Identificatori" 4. e l'id del bundle dall'elenco a destra 5. ora scorrere verso il basso fino a visualizzare la notifica push 6. spegnerlo 7. archiviare la build e ricaricarla su Apple Store Connect

Spero che sia d'aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.