Уникальный идентификатор для мобильного сафари и приложения в iOS
Я хочу однозначно идентифицировать iPhone, чтобы наш сервер мог ответить на какой-то пользовательский html. Я хочу, чтобы иметь возможность идентифицировать телефон в Safari и встроенный браузер в приложении. Поскольку каждое приложение изолировано, файлы cookie не будут работать.
Спасибо
Ответы
Ответ 1
Это действительно очень сложно.
Вы можете запрограммировать приложение, чтобы он запускал Mobile Safari при первом открытии и задавал куки файл, а затем перенаправлял обратно в приложение с помощью специальной схемы URL.
Это может показаться странным, но на самом деле как работает система входа в систему Facebook, и она позволяет обозревателю и браузеру "вырываться" из их песочниц и совместно использовать один и тот же уникальный идентификатор файла cookie.
Конечно, вы не знаете, удалил ли пользователь cookie, если вы не будете перенаправлять каждый раз, когда приложение запускается, что может раздражать.
UPDATE:
Начиная с iOS 9, теперь вы можете открыть страницу, используя SFSafariViewController
внутри своего приложения, вместо перенаправления на приложение Safari. Это все еще немного неудобно, но может быть предпочтительнее двойного переключателя.
Ответ 2
Это невозможно напрямую, но при сотрудничестве с веб-сайтом это возможно, как сказал Ник Локвуд, и здесь значительно расширенная версия метода, который он описывает:
Ваше приложение должно сделать это:
- Запустить мобильное сафари, используя
[[UIApplication sharedApplication] openURL:url];
- URL должен быть специальным, например.
http://yourwebsite.com/give-ios-app-the-cookie
- На вашем веб-сайте, когда этот URL-адрес запущен, выполните перенаправление на
your-app-url-scheme:cookievalue=<somevalue>
(например, angrybirds:cookievalue=hh4523523sapdfa
)
- когда ваш делегат приложения получает
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
обрабатывает URL-адрес, чтобы получить значение cookie
Обратите внимание, что вы не должны делать это автоматически при запуске приложения - пользователь увидит переход на Mobile Safari и обратно, что не очень удобно для пользователей, и Apple отклонит ваше приложение (Apple также считает, что это "загрузка" персональные данные пользователя на сервер без их предварительного согласия ").
Было бы лучше сделать это в ответ на пользователя, обратив внимание на пользовательский опыт - например. подождите, пока пользователь нажмет кнопку "Войти", затем сделайте это, и если пользователь не зашел на ваш сайт, http://yourwebsite.com/give-ios-app-the-cookie должен показать пользователю логин экран в сафари. Если пользователь вошел в систему, вы можете на короткое время показать экран "Автоматически регистрировать вас в..." на секунду или два в Safari, прежде чем перенаправить пользователя обратно.