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

Я хочу однозначно идентифицировать iPhone, чтобы наш сервер мог ответить с помощью некоторого пользовательского HTML.Я хочу, чтобы можно было идентифицировать телефон в Safari и во встроенном браузере в приложении.Поскольку каждое приложение находится в «песочнице», куки не будут работать.

Спасибо

Ответы [ 2 ]

12 голосов
/ 20 августа 2012

Это не возможно напрямую, но с помощью веб-сайта это возможно, как заявил Ник Локвуд, и вот значительно расширенная версия метода, который он описывает:

Ваше приложение должно сделать это:

  1. Запустите мобильное сафари, используя [[UIApplication sharedApplication] openURL:url];
  2. URL-адрес должен быть специальным, например.http://yourwebsite.com/give-ios-app-the-cookie
  3. На вашем веб-сайте, когда этот URL-адрес запускается, введите перенаправление на your-app-url-scheme:cookievalue=<somevalue> (например, angrybirds:cookievalue=hh4523523sapdfa)
  4. , когда ваш делегат приложения получит - (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.Если пользователь вошел в систему, вы можете кратко показать экран «Автоматический вход в систему ...» на секунду или две в Safari, прежде чем перенаправить пользователя обратно.

10 голосов
/ 08 февраля 2012

Это на самом деле очень сложно.

Вы можете запрограммировать приложение так, чтобы оно запускало Mobile Safari при первом открытии и устанавливало cookie, а затем перенаправляло обратно в приложение, используя собственную схему URL.

Это может показаться странным, но на самом деле это то, как работает система общего входа в Facebook, и это позволяет и приложению, и браузеру "взламывать" свои песочницы и использовать один и тот же уникальный идентификатор файла cookie.

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

ОБНОВЛЕНИЕ:

Начиная с iOS 9, теперь вы можете открытьстраница, использующая SFSafariViewController внутри вашего приложения вместо перенаправления в приложение Safari.Это все еще немного неуклюже, но может быть предпочтительнее двойного переключения приложений.

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