Установка файла cookie в приложении для iPhone - PullRequest
8 голосов
/ 22 октября 2009

Можно ли установить cookie в приложении iPhone, чтобы оно сохранялось, чтобы позже, когда пользователь находился в Mobile Safari, этот cookie можно было отправить на веб-сервер?

Ответы [ 4 ]

15 голосов
/ 27 октября 2009

** Обновление 2017 **
За последние годы в iOS было внесено множество изменений в механизмы безопасности и взаимодействие между приложениями.

Приведенный ниже код больше не работает в текущих выпусках iOS, поскольку Safari больше не принимает javascript:... в URL-адресах и инфраструктурах, таких как NSURL, перехватывает их и возвращает nil.

Единственная альтернатива, которая все еще работает, это либо разместить веб-сайт и открыть Safari, либо интегрировать такую ​​HTML-страницу в свое приложение и запустить небольшой http-сервер для размещения его по требованию.

** iOS до 6.x **
Поскольку Apple принудительно установила песочницу во всех приложениях магазина приложений
в настоящее время нет простого способа реализовать ваш запрос.

Однако вы можете открыть специальный http: // - URL из вашего приложения, содержащего javascript, для размещения файла cookie:

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

Использование javascript в URL-адресах использовалось различными приложениями iPhone для перекрестного общения
с MobileSafari (например, instapaper ).

Другим вариантом может быть включение статической HTML-страницы в ваше приложение или на сервер и указание MobileSafari открыть ее.
Страница в свою очередь может установить постоянный файл cookie.

Надеюсь, это поможет!

2 голосов
/ 01 ноября 2009

Я считаю, что это легко сделать с помощью библиотеки ASIHTTPRequest. Он инкапсулирует использование глобального хранилища cookie.

http://allseeing -i.com / ASIHTTPRequest / Как в использовании

С этой библиотекой можно отправлять запросы, которые будут накапливать файлы cookie, а затем эти файлы cookie позже будут влиять на другие запросы.

Я использую это для получения доступа к аутентифицированным API в моем приложении для iPhone.

0 голосов
/ 30 октября 2009

Я новичок в разработке для iPhone, но разве открытие UIWebView не позволит вашему серверу установить куки в браузере, чтобы, когда пользователь посещает сайт с Safari, куки были доступны для чтения вашему веб-серверу? Возможно, скрытый или маленький UIWebView? Я не могу сказать, какой вариант использования от вашего вопроса.

0 голосов
/ 22 октября 2009

Документация для NSCookieStorage предполагает, что это будет такой механизм. Но независимо от того, включает ли «все приложения» Mobile Safari или нет, ваши эксперименты должны определить ....

См. Также общую документацию для системы загрузки URL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...