Вопрос по ios, native, html5 – Как разделить контекст между Safari и Native App?

9

Мне нужноset some context via Safari (токен контекста), а затемread that context from a native iOS app, Каковы лучшие практики для этого?

Пара мыслей до сих пор:

Set the context in an HTML 5 database, but I'm not sure this will work because the database might be only accessible from Safari. Would using a WebUIView in the native app allow me to access the same HTML5 database / local storage as Safari? Set the context in device storage, but I'm not sure this will work because I don't know if Safari can actually write to device storage.
Вы собираетесь запускать приложение из браузера? Или приложение будет позже открыто пользователем? Jesse Rusak
@JesseRusak - это немного сложно, но в результате пользователь получает по электронной почте URL-адрес с уникальным & quot; контекстным токеном & quot; в этом. Они открывают это в Сафари. Затем он перенаправляет их в Apple App Store для загрузки приложения. Как только приложение загружено, нам нужно знать этот оригинальный «токен контекста». Сегодня мы просто отправляем пользователю SMS с пользовательским URL-адресом, который мы обрабатываем в приложении, и анализируем токен контекста, но это нежелательное поведение. Мы ищем лучший способ передать этот контекст и избавиться от SMS-сообщения. Paul Fryer

Ваш Ответ

3   ответа
-1

WebViewJavascriptBridge.

Тем не менее, в вашем случае наиболее приемлемым является принятие принятого ответа об использовании настраиваемой схемы URL-адресов (непосредственно из электронной почты в приложение, после установки).

4

Let the web server keep track on the user both in the app and on the website, for example by creating a user account.

или же

Pass the context token to the app immediately via an URL-scheme by registering your app as a protocol handler, see more info here

Suggested way:

Send e-mail with link and context token, when user clicks link, save context token in cookie in safari, then redirect to appstore for app download. When the user downloaded the app and opens it, present a button for the user, when the user clicks it, open a web page in safari. Safari loads the cookie with the context token, and then triggers another link using a URL-scheme like yourAppName://contextToken=12345678. The link opens your app which reads the context token from the URL.

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

Позволить вашему серверу выполнять работу с помощью учетных записей пользователей - это лучший и чистый способ для i.m.o. Вот почему у вас есть учетные записи пользователей. Если вы не опробовали обработчик протокола для чтения определенных URL, я думаю, это также может быть удобно.

Классная идея Интересно, будет ли у пользователя плохой пользовательский интерфейс, если он отскочит назад между Safari и нативным приложением, когда они впервые открыли его? Paul Fryer
TechCrunch сообщил, что этот метод в настоящее время вызывает отклонение приложений Apple.techcrunch.com/2013/02/25/…
Да, чтобы предотвратить злоупотребление рекламой, кажется. Намерение здесь не о рекламе, а о части процесса регистрации. Если Apple это ясно, это может быть разрешено. Или, может быть, нет - если Apple хочет отговорить все "сафари", рекламу или нет. Однако нет никакой уверенности, кроме как пытаться =)
Вы также внедряете уязвимость в системе безопасности, полагая, что приложение утверждает, чтоyourAppName://contextToken=12345678 на самом деле ваше приложение, а не злоумышленник, пытающийся украсть вашу сессию ... универсальная ссылка - хороший обходной путь.
Конечно, это не будет лучшим пользовательским опытом и может показаться немного запутанным, но я не могу придумать лучшего способа, если вы действительно хотите избежать процесса регистрации для пользователя. Однако, поскольку вы уже отправляете какой-то токен пользователю по электронной почте, в некотором смысле это означает, что у вас все равно есть процесс регистрации, и вы можете пройти через него до конца. Посмотрите на приложения, такие как WhatsApp, или игры, такие как WordFeud - у обоих есть быстрые процессы регистрации, которые не делают их менее популярными.
1

чтобы приложение при первом запуске открывало URL-адрес сервера, который перенаправляет пользователя в Safari, и сравнивало IP-адреса, время, версию iOS и т. Д., Чтобы получить хотя бы приблизительное совпадение? Если приблизительного совпадения недостаточно, вы можете, когда увидите приблизительное совпадение, открыть свое приложение в сафари, чтобы подтвердить их идентификацию с помощью cookie.

@JesseRusak у вас есть ссылка?
Вы можете подтвердить их личность, проверив файл cookie (в Safari), который был установлен при первом посещении сайта пользователем. Это позволит вам выяснить, какой контекст они должны иметь, и позволит перенаправить их в приложение (через схему URL) с правильным контекстом.
Я не получил часть cookie ...? Safari не может получить доступ к файлам cookie из приложения, они находятся в «песочнице» ...
Кроме того, разве iOS 6 не имеет ничего подобного? Они объявили о некотором способе запуска приложения (или магазина приложений) с веб-сайта и передачи контекстной информации, не так ли?
Ах, я просто подумал об одном и том же ^^, см. Мои правки

Похожие вопросы