9
votes

Définir un cookie dans une application iPhone

est-il possible de définir un cookie dans une application iPhone qui persiste, de sorte que plus tard, lorsque l'utilisateur est en safari mobile, ce cookie peut être envoyé à un serveur Web?


1 commentaires

4 Réponses :


0
votes

the Documentation pour Nscookiestorage suggère que ce serait un tel mécanisme. Mais si "toutes les applications" inclut vraiment des safari mobiles ou non, votre expérimentation devra déterminer ....

Voir aussi la documentation générale pour le Système de chargement d'URL .


2 commentaires

Basé sur mes expériences rapides, les cookies que j'avais économisées avec NscookiStorage n'étaient lisibles que par l'application qui les a créés. Je ne sais pas si je fais quelque chose de mal ou si ce passage dans les documents est trompeur.


J'admets que je ne l'ai jamais utilisé dans mes propres applications, mais j'ai vu des commentaires sur le Web qui semblaient indiquer que d'autres avaient eu du succès avec elle. Désolé d'entendre que cela n'a pas fonctionné pour vous. :-(



16
votes

** Mise à jour 2017 **
Beaucoup de modifications apportées aux mécanismes de sécurité et aux communications croisées ont été introduites à IOS au cours des dernières années que c'était la première fois que cela a été répondu pour la première fois.

Le code ci-dessous ne fonctionne plus sur les communiqués IOS actuels, car Safari n'accepte plus JavaScript :. .. code> dans les URL et les cadres tels que nsurl code> attrapez ces et retournez nil code>. p>

La seule alternative qui fonctionne toujours est d'accueillir toujours un Site Web et avoir Safari Ouvrez-le ou intégrez une telle page HTML dans votre application et exécutez un petit serveur HTTP pour l'héberger à la demande. P>

** iOS jusqu'à 6.x **
Étant donné que Apple a forcé le Sandboxing em> sur toutes les applications d'App Store
Il n'y a actuellement aucun moyen facile de réaliser votre demande. p>

Vous pouvez cependant ouvrir une spéciale http: // - URL de votre application contenant JavaScript pour placer un Cookie: p>

NSString jsURL = @"javascript:function someFunction(){ /* your javascript code here */ } someFunction();void(0)";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: jsURL]];


8 commentaires

Essayé cela et ça ne semble pas fonctionner. [NSURL URLWITHITRING: @ "JavaScript: Fonction de fonctionnement () {alerte (test! ');} Assocition (); void (0)"] renvoie nul.


Utilisation de l'iOS Safari.app vous ne pouvez pas (pas sans jailbreak et fichier: // support).


JavaScript: // schéma ne semble pas fonctionner, du moins pour iOS5 / 6


Je voudrais noter que cette réponse a deux ans et peut ne pas fonctionner avec les versions actuelles d'IOS. En fait, un signet avec 'JavaScript: fonction ()' fonctionne toujours


@ikarius - Il n'y a pas de place dans ma réponse où je mentionne un "javascript: //" schéma - c'est 'JavaScript: fonctionne fonctionne fonctionne () {...}' - cela doit être utilisé exactement comme indiqué ci-dessus


Cela ne fonctionne pas. Safari ne possède pas de schéma JavaScript!


@Shirkrin Ok, puis lisez le premier commentaire. [Nsurl Urlwithstring: Jsurl] retourne nil. Je suppose que sa chaîne url n'est pas correcte. Just "JavaScript: alerte ()" ne fonctionne pas aussi.


@Andreym. Vous avez raison, cela semble faire partie de la sécurité plus stricte dans IOS ces jours-ci. Safari n'accepte plus non plus les URL contenant JavaScript: ... J'ai mis à jour la réponse à inclure ce fait.



0
votes

Je suis nouveau au développement de l'iPhone, mais n'ouvre pas une UIWebView permettez à votre serveur de définir un cookie sur le navigateur, puis lorsque l'utilisateur visite le site avec Safari, le cookie serait lisible sur votre serveur Web? Peut-être une UIWebView cachée ou petite? Je ne peux pas dire quel est l'affaire d'utilisation de votre question.


1 commentaires

Uiwebviews sont de sandboxed et utilisent un stockage de cookie différent vers la safari mobile



2
votes

Je crois que cela est facilité à l'aide de la bibliothèque ASIHTTPRequest. Il encapsule l'utilisation du magasin de cookies mondial.

http://allseeing-i.com/adihttprequest/how-a-utiliser

Vous pouvez faire des demandes avec cette bibliothèque qui accumulera des cookies, puis ces cookies affecteront d'autres demandes plus tard.

Je l'utilise à un grand effet pour accéder aux API authentifiées dans mon application iPhone.


0 commentaires