Wie kann ich den Kontext zwischen Safari und Native App teilen?

9

Ich muss einen Kontext über Safari festlegen (ein Kontext-Token) und dann diesen Kontext von einer nativen iOS-App lesen. Was sind die besten Praktiken dafür?

Ein paar Gedanken bis jetzt:

  1. Legen Sie den Kontext in einer HTML 5-Datenbank fest, aber ich bin nicht sicher, ob dies funktioniert, da die Datenbank möglicherweise nur von Safari aus zugänglich ist. Wenn ich über eine WebUIView in der nativen App auf dieselbe HTML5-Datenbank / denselben lokalen Speicher zugreifen kann wie Safari ?
  2. Legen Sie den Kontext im Gerätespeicher fest, aber ich bin nicht sicher, ob das funktioniert, weil ich nicht weiß, ob Safari tatsächlich in den Gerätespeicher schreiben kann.
Paul Fryer 01.08.2012, 16:21
quelle

3 Antworten

4

Ich würde eine dieser beiden Optionen vorschlagen:

  • Lassen Sie den Webserver den Benutzer sowohl in der App als auch auf der Website verfolgen, z. B. indem er ein Benutzerkonto erstellt.

oder

  • Übergeben Sie das Kontext-Token über ein URL-Schema sofort an die App, indem Sie Ihre App als Protokoll-Handler registrieren. Weitere Informationen finden Sie unter hier

    Vorgeschlagener Weg:

    1. Senden Sie eine E-Mail mit Link und Kontext-Token, wenn der Benutzer auf den Link klickt, speichern Sie den Kontext-Token in einem Cookie in Safari und leiten Sie ihn dann zum Appstore für den App-Download um.
    2. Wenn der Benutzer die App heruntergeladen und geöffnet hat, zeigen Sie eine Schaltfläche für den Benutzer an, wenn der Benutzer darauf klickt, öffnen Sie eine Webseite in Safari.
    3. Safari lädt den Cookie mit dem Kontext-Token und löst dann einen anderen Link aus, der ein URL-Schema wie IhrAppName: // contextToken = 12345678 verwendet. Der Link öffnet Ihre App, die das Kontext-Token von der URL liest.

Es gibt keine bewährte Methode, Daten direkt zwischen Safari und einer nativen App direkt zu teilen, und das ist einfach nicht beabsichtigt. Alle Cookies und Speicher sind für jede App sandboxed und Safari hat eine eigene Sandbox.

Es ist die beste und sauberste Art, Ihren Server dazu zu bringen, die Aufgabe über Benutzerkonten zu erledigen. Deshalb haben Sie Benutzerkonten. Wenn Sie den Protokoll-Handler zum Lesen bestimmter URLs nicht ausprobiert haben, könnte das auch nützlich sein, denke ich.

    
jake_hetfield 01.08.2012, 16:47
quelle
1

Könnte die App beim ersten Start eine URL auf den Server werfen, die den Benutzer in Safari umleitet, und IP-Adressen, Zeit, iOS-Version usw. vergleichen, um eine ungefähre Übereinstimmung zu erzielen? Wenn eine ungefähre Übereinstimmung nicht ausreichend ist, könnten Sie, wenn Sie eine ungefähre Übereinstimmung sehen, Ihre App mit einer Safari öffnen, um ihre Identifizierung über einen Cookie zu bestätigen.

    
Jesse Rusak 01.08.2012 16:46
quelle
-1

Mit WebViewJavascriptBridge können Sie ganz einfach Nachrichten zwischen einem UIWebView und Ihrer Muttersprache senden.

In Ihrem Fall ist jedoch der Vorschlag der akzeptierten Antwort, ein benutzerdefiniertes URL-Schema zu verwenden (direkt von E-Mail zu App, nach der Installation), am sinnvollsten.

    
Alan H. 19.09.2012 00:33
quelle

Tags und Links