ios I cookie delle pagine Web non vengono rilevati da UIWebView



cookies sharepoint (1)

Sto sviluppando un'app per iOS che carica una pagina Web utilizzando UIWebView

La pagina web imposta quattro cookie:

  1. Due per Google Analytics, _ga e _gat
  2. Uno per il contatore unico dei visitatori delle mie applicazioni web
  3. Uno per la mia pagina web per rilevare se l'utente ha votato o meno.
    1. Se questo cookie è disponibile, visualizza i risultati del sondaggio.

Da Firefox Storage Inspector vedo tutti i miei cookie come previsto, vedi screenshot:

Tuttavia, da iOS ho stampato i NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies All'interno di webViewDidFinishLoad e ci sono solo due dei quattro cookie previsti, anche gli utenti iOS possono votare tutte le volte che volevano perché i cookie non vengono rilevati (o non sono memorizzati nel dispositivo iOS) :

if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies {
    for c in cookies {
        print("*******************")
        print("name: \(c.name)")
        print("domain: \(c.domain)")
        print("value: \(c.value)")
        print("path: \(c.path)")
        print("expiresDate: \(c.expiresDate)")
    }
}

Perché la mia app per iOS non rileva i miei cookie personalizzati e rileva solo quelli di Google Analytics?

NOTA 1: Ho anche aggiunto questo codice alla mia app:

func applicationDidBecomeActive(application: UIApplication) {
    NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
}        

NOTA 2: Il mio back-end è un'applicazione web di SharePoint


Alcune idee:

Le impostazioni "Blocca cookie" di Safari del dispositivo annullano tutte le modifiche a cookieAcceptPolicy . La politica predefinita di questa impostazione sul dispositivo è "Permetti dai siti web che visito", che a seconda della versione del dispositivo iOS, consente i cookie di terze parti. I test con iOS 9.3.x mostrano che i cookie di terze parti sono persistenti in un UIWebView con le impostazioni predefinite, ma non persistono con le impostazioni "Consenti solo dal sito corrente" o "Blocca sempre".

Controlla se il dispositivo persiste il tuo cookie con le diverse impostazioni dei cookie di Safari.

Inoltre, i tuoi cookie hanno una data di scadenza impostata? Ho scoperto che i cookie senza una data di scadenza impostata sono considerati cookie di sessione in una UIWebView , che persistono solo con il ciclo di vita della vista Web che li ha ricevuti.





uiwebview