Xcode 8 "il diritto aps-environment non è presente nella firma dell'app" al momento dell'invio


118

Ho un'app a cui abbiamo inviato dozzine di versioni negli ultimi 6 mesi e utilizziamo APNS. Ho ricevuto la seguente e-mail da Apple dopo l'aggiornamento a Xcode 8

Gentile sviluppatore,

Abbiamo rilevato uno o più problemi con la tua recente consegna per APP_NAME. La consegna è andata a buon fine, ma potresti voler correggere i seguenti problemi nella prossima consegna:

Diritto di notifica push mancante: l'app include un'API per il servizio di notifica push di Apple, ma il diritto di ambiente aps non è presente nella firma dell'app. Per risolvere questo problema, assicurati che il tuo ID app sia abilitato per la notifica push nel portale di provisioning. Quindi, firma la tua app con un profilo di provisioning di distribuzione che includa l'autorizzazione aps-environment. Questo creerà la firma corretta e potrai inviare nuovamente la tua app. Per ulteriori informazioni, vedere "Provisioning e sviluppo" nella Guida alla programmazione delle notifiche push e locali. Se la tua app non utilizza il servizio Apple Push Notification, non è richiesta alcuna azione. Puoi rimuovere l'API da invii futuri per interrompere questo avviso. Se utilizzi un framework di terze parti,

Dopo aver corretto i problemi, puoi utilizzare Xcode o Application Loader per caricare un nuovo file binario su iTunes Connect.

Saluti,

Il team dell'App Store

La cosa strana è che sono andato su developer.apple.com -> Certificati, identificatori e profili e il mio AppId ha ancora le notifiche push abilitate. Non sto facendo nulla di diverso da quello che ho mai fatto su di esso, quindi sono curioso di sapere se l'aggiornamento Xcode 8 ha rotto qualcosa. Qualche idea?

BTW: Il collegamento che hanno inserito per la Guida alla programmazione delle notifiche push è stato interrotto nell'e-mail, quindi non è un buon segno.

Risposte:


156

Veramente molto facile. Per qualche motivo è stato disabilitato su Xcode 8 ma vai su Target -> Funzionalità e verifica che le notifiche push siano corrette in quella vista. Per me aveva un "Fix Me" che dovevo fare clic, e voilà.


4
La cosa strana di questo problema non era la soluzione, era il fatto che su Xcode 7 questo era abilitato e dopo l'aggiornamento veniva disabilitato.
Unome

2
Ho anche dovuto accedere al file dei diritti e modificare il valore di APS Environment in "produzione" perché era impostato su "sviluppo" per impostazione predefinita al momento della creazione.
Bek

61
Ci devono essere alcune persone senza cervello assunte di recente in Apple .. Perché stanno perdendo tempo agli sviluppatori disabilitando le cose per impostazione predefinita e impostando implicitamente valori inappropriati senza alcun preavviso al riguardo. Ho perso un giorno nella creazione di profili, certificati, debug e altre cose fastidiose ..
Hristo Atanasov

3
Finalmente! È ridicolo, è stato così difficile farlo funzionare. Ho rimosso e ricreato i certificati / profili per quasi 5 ore. La cosa buona è che posso dire che ora capisco perfettamente cosa sono questi certificati / profili / identificatori :) Grazie per questo suggerimento.
Kamil Rykowski

4
@bek nota che probabilmente dovresti lasciarlo come sviluppo. Viene automaticamente modificato in produzione al momento del caricamento su iTunes Connect.
Montdidier

84

Ho anche lo stesso problema e sono sicuro che la notifica push è disattivata per impostazione predefinita in Xcode8. Non l'ho notato. Stai attento.

capacità


Puoi dirmi questo perché non ho la sezione delle notifiche push nel mio account?
Anuj

28

È stata apportata una modifica in Xcode 8, in cui i tuoi diritti non provengono più dagli identificatori di app, ma dalle funzionalità selezionate nella destinazione dell'app. Quindi, come ha detto Unome (l'OP), devi verificare che le notifiche push siano attive.

Per me, non era un pulsante "Fix Me", ma avevo due file di autorizzazione (uno per lo sviluppo e uno per la distribuzione). La commutazione della funzionalità Notifiche push aggiungerebbe la aps-environmentchiave, con il valore development, al file dei diritti di sviluppo, ma non la aggiungerebbe al file dei diritti di distribuzione. La copia della stessa chiave nella distribuzione ha funzionato per eliminare l'email di avviso durante il caricamento su iTunes Connect.

Per la maggior parte dei progetti, dovrebbe essere sufficiente attivare le notifiche push o, se è già attivo ma la chiave non è nei diritti, provare a spegnerlo e riaccenderlo.


Questa è la barca in cui mi trovo, tranne per il fatto che non importa cosa specifichi nel mio .entitlementsfile per la configurazione / schema corrente, utilizza sempre productioncome file aps-environment.
Albert Bori

l'attivazione / disattivazione della notifica push in Funzionalità blocca il mio Xcode 8 !!
djay

2
@AlbertBori Strano, sono riuscito a farlo solo per mostrare lo sviluppo, il che andava bene perché quando è stato archiviato, sembrava come production.
timgcarlson

6
@ meteore Va bene se il valore è development. Verrà modificato nell'ipa quando il progetto viene archiviato.
timgcarlson

2
@timgcarlson Questo in realtà non accade durante l'archiviazione. Succede durante l'invio o durante l'esportazione. Anche alcune informazioni utili per verificare che sia impostato correttamente qui: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard

27

Dalle note di rilascio di Xcode :

Xcode 8 non copia automaticamente l'autorizzazione all'ambiente aps dai profili di provisioning in fase di compilazione. Questo comportamento è intenzionale. Per utilizzare questa autorizzazione, abilitare le notifiche push nel riquadro delle funzionalità dell'editor del progetto o aggiungere manualmente l'autorizzazione al file delle autorizzazioni. (28076333)

Questo è un grande cambiamento poiché è sempre stato piuttosto strano che il diritto aps-environment non richiedesse il plist, ma molti altri lo facevano.

Per quelli di voi che non vogliono semplicemente premere ciecamente "Fix Me" e attualmente non hanno un file di diritti, è solo un file plist a cui si fa riferimento nelle impostazioni di compilazione del progetto in "Diritti di firma del codice"


1
Non sono riuscito a trovare quella citazione nelle note collegate!
Iulian Onofrei

Non so chi abbia votato positivamente il mio commento e cosa fosse sbagliato, ma posso trovarlo anche adesso.
Iulian Onofrei

13

Dopo una giornata di lotta con Xcode 8 non siamo riusciti a capire perché lo aps-environmentsviluppo NON è stato aggiunto alle nostre build di debug. Mancava dalla sezione dei diritti nell'app costruita per il test di debug ... anche se avevamo ABILITATO la nuova funzionalità e il file dei diritti esisteva. Il problema è che il file dei diritti deve essere impostato per QUALSIASI SDK nelle impostazioni di compilazione Xcode per i diritti di debug.

immagine dello schermo


Non penso che ci sia alcuna differenza tra l'impostazione di un valore per la Debugchiave e l'impostazione per quella Debug> Any SDK, poiché quest'ultima viene utilizzata per sovrascrivere il valore per un particolare SDK.
Iulian Onofrei

Questa è la soluzione per me
Himanth

Dopo aver lottato per tutta la mattina, questo era anche il problema che stavo avendo. Commutazione delle funzionalità, generazione di profili di provisioning, niente di tutto ciò ha funzionato. Questo ha fatto.
Dave S

questa è ancora una soluzione valida in alcuni casi su Xcode 8.3.3
dan

Vorrei poter votare un milione di volte. Ho lottato per una settimana e questa era la soluzione. La semplice digitazione del percorso del file nelle autorizzazioni di firma del codice in alto non era sufficiente, doveva essere eseguita anche nella parte "Any SDK". Questa è stata la chiave per risolverlo per me.
Robert Bentley

7

Ho ricevuto la stessa email da Apple utilizzando XCode 7.3.1. Quello che ho fatto per risolvere il problema è stato:

  1. In Funzionalità> Imposta notifica PUSH su ON come indicato nella risposta di @Bruce Tsai.
  2. In Build-Settings> Code Signing> Code Signing Identity imposta il certificato dello sviluppatore per il debug e il certificato di distribuzione per il rilascio, come mostrato nell'immagine:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


Salve, in Funzionalità non ricevo funzionalità> Imposta notifica PUSH
Anuj

@Anuj, ho aggiunto uno screenshot dove dovrebbe essere nel tuo Xcode.
Ruben

5

Se stai utilizzando i framework Firebase e non stai utilizzando le notifiche push, ci sono due soluzioni 1. Basta accettare il messaggio di "problema" che viene inviato a tutto il tuo team ogni volta che carichi un file binario. L'app verrà comunque accettata come invio fino a quando non stai effettivamente utilizzando le notifiche, puoi ignorare l'avviso. oppure 2. fai questo: https://stackoverflow.com/a/46802075/7529450 . Ciò rimuoverà la fastidiosa notifica e-mail e verrà anche accettato come invio.


4

La gestione automatica delle firme era disattivata per me

Gestire automaticamente la firma era disattivato per me, ho controllato e funzionava bene per me.


3

L'utilizzo delle notifiche push di Xcode 9 è stato abilitato.

Ho provato a disattivare / riattivare le funzionalità di notifica push . (non ha funzionato)

Ho provato a disabilitare / riattivare Gestisci automaticamente la firma . (non ha funzionato)

È venuto fuori che ho dovuto eliminare e aggiungere nuovamente i miei profili di provisioning. ( vedi qui come farlo ) Potrebbe essere necessario disabilitare / riattivare Gestisci automaticamente la firma dopo i reparti.


2

Per me il problema era perché c'erano due file di diritti: Entitlements-Debug.pliste Entitlements-Release.plist. E solo uno di loro (Debug) ha bisogno di impostazioni al suo interno.

La modifica di più valori di Impostazioni diMyAppName/MyAppName.entitlements compilazione > Firma> Autorizzazioni per la firma del codice in un singolo e quindi riattivare le funzionalità> Selettore notifiche push ha fatto il trucco per me.

Spero che sia d'aiuto.


0

Un'altra opzione che ha funzionato: copia-incolla l'origine di AppName/Entitlements-Debug.plistinto AppName/Entitlements-Release.plist.

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.