La nostra app per iOS è stata recentemente respinta da Apple perché non era in grado di stabilire una connessione valida alla nostra API del server. Stiamo utilizzando uno user-agent appositamente formattato per registrare il token del dispositivo e così via. Se l'user-agent non si adatta alla nostra sheme, l'API blocca la richiesta.Impostazione User-Agent in AFNetworking
Tutto ha funzionato molto bene testando l'app sul simulatore e su un dispositivo reale. L'agente utente è stato impostato correttamente e le chiamate api hanno funzionato.
Come Apple ha testato l'app, l'hanno rifiutata perché l'app non era in grado di connettersi all'api. Quando abbiamo controllato i file di log del server, abbiamo notato che ogni richiesta inviata dai tester Apple aveva un agente utente completamente diverso da quello impostato nel codice.
L'(corretto) user-agent, che è stato impostato come abbiamo testato l'applicazione:
AppName-App/010002 iOS/8.1.2 on Apple iPhone/DeviceToken
L'(errata) user-agent, come appariva nei nostri log:
AppName/1.0.0.2 (iPad; iOS 8.1.3; Scale/2.00)
L'applicazione utilizza AFNetworking e imposta la sua user-agent come segue:
ConnectionManager.requestSerializer.setValue(IOSREQUESTHEADER, forHTTPHeaderField: "user-agent")
Hai idea del motivo per cui questo non funziona mentre Apple verifica l'app, mentre è completamente a posto quando lo facciamo?
migliori saluti
La funzione 'setValue' viene richiamata direttamente dopo l'inizializzazione del Framework. Questo deve essere nella build di rilascio perché altrimenti non ci sarebbe alcuna richiesta. Quindi non c'è alcuna possibilità che la funzione 'setValue' non venga compilata penso che sia –
Difficile dire, quindi, senza più contesto. –
Quali parti del codice potrebbero aiutare a indagare ulteriormente il problema? –