Подтвердить что ты не робот

Уникальный идентификатор для мобильного сафари и приложения в iOS

Я хочу однозначно идентифицировать iPhone, чтобы наш сервер мог ответить на какой-то пользовательский html. Я хочу, чтобы иметь возможность идентифицировать телефон в Safari и встроенный браузер в приложении. Поскольку каждое приложение изолировано, файлы cookie не будут работать.

Спасибо

4b9b3361

Ответ 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, прежде чем перенаправить пользователя обратно.