2012-03-14 7 views
6

Ho bisogno di creare un file .xarchive iOS usando un profilo sviluppatore, che un cliente possa dimettersi usando i suoi profili di distribuzione.Come posso firmare un codice .xarchive per iOS in modo che un cliente possa dimettersi correttamente? (usando le notifiche push)

(Ho letto questo, ma non ha avuto alcun soluzioni reali: How can I send iOS app to client, for them to code-sign)

Il cliente non vuole condividere le proprie chiavi private, nè mi darà l'accesso al di sopra 'sviluppatore' nel centro membro. E non vogliamo condividere il nostro codice sorgente.

Abbiamo bisogno di supportare le notifiche push, quindi questo significa che abbiamo bisogno di un ID app pienamente qualificato.

Non riesco a capire un modo che mi permetta di costruire ed esportare un .xarchive firmato con 'aps production', 'get-task-allow' come falso, MA ANCHE usando il certificato che corrisponde al certificato di distribuzione dei client.

Questo sembra un bug in Xcode, le modifiche a 'aps production' e 'get-task-allow' non dovrebbero essere legate alla configurazione, non al tipo di profilo di provisioning? Sto usando 'Release', ma con il mio profilo sviluppatore.

Mi manca qualcosa o è solo impossibile?

risposta

5

Ho capito la risposta a questa domanda attraverso tentativi ed errori. Anche se le note tecniche e la maggior parte delle risorse web dicono che non è necessario un entitlement.plist se si utilizza XCode4 +, ci sono alcuni casi in cui lo si fa. Due casi sono rappresentati da mia domanda di cui sopra:

  • edificio configurazione di rilascio (es: Archivio), ma la firma con uno sviluppatore di provisioning profilo
  • utilizzando le notifiche push

mio entitlements.plist personalizzato finale ha 3 valori:

<?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>get-task-allow</key> 
    <false/> 
    <key>aps-environment</key> 
    <string>production</string> 
    <key>keychain-access-groups</key> 
    <array> 
     <string>L23874DF.com.your.appid</string> 
    </array> 
</dict> 
</plist> 

Una volta ho avuto che nella mia entitlements.plist, ho costruito con il profilo di provisioning di sviluppo per questa applicazione id. Poi l'ho archiviato e ho esportato l'archivio dall'organizzatore. Una volta esportato, l'ho inviato al mio cliente. Il client è stato in grado di abbandonare l'archivio con un profilo ad hoc e inviarmi un file IPA, che ho caricato sul mio dispositivo. Ho anche ricevuto con successo una notifica push da Urban Airship a questo IPA!

+0

"Una volta che avevo questo nel mio entitlements.plist, ho creato con il profilo di provisioning degli sviluppatori per questo ID app" => Vuoi dire che hai assegnato il tuo profilo sviluppatore all'identità di firma del codice di rilascio? Questo lancia un avvertimento, hai capito? – Daniel

+0

sì, ricevo questo avvertimento quando costruisco, ma era l'unico modo per ottenere i risultati corretti dopo la nuova firma. – pj4533

+5

Puoi condividere il processo utilizzato per ri-firmare l'archivio? – Trey