Kako Vam možemo pomoći?

Ukratko nam recite o čemu je riječ – odgovorit ćemo Vam e-poštom.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Na početnu stranicu

App mobili: la chat in una WebView

Come integrare reactive.chat in un’app iOS o Android: tramite la pagina /embed/SITE_KEY in una WKWebView o WebView, con identità via JavaScript, caricamento di file, pulsante Indietro e notifiche push via webhook.

Per le app non esiste un SDK nativo. La Sua app carica invece una pagina realizzata appositamente per una WebView:

https://reactive.chat/embed/SITE_KEY

La pagina non ha cornice, navigazione né pulsante della chat: il widget riempie lo schermo ed è subito aperto. È la stessa chat del Suo sito web: stesso progetto, stesso aspetto, stessa posta in arrivo. Trova la chiave del sito nell’account in Progetto → Installazione.

Proprietà della pagina:

iOS (WKWebView)

import WebKit

let konf = WKWebViewConfiguration()
konf.allowsInlineMediaPlayback = true          // otherwise the full-screen player pulls the chat away

let web = WKWebView(frame: .zero, configuration: konf)
web.scrollView.bounces = false
web.scrollView.contentInsetAdjustmentBehavior = .never
web.load(URLRequest(url: URL(string: "https://reactive.chat/embed/SITE_KEY")!))

Estenda la WebView sull’intera area, senza limitarla alla guida di layout dell’area sicura: la pagina tiene già conto dei margini.

Android (WebView)

val web = findViewById<WebView>(R.id.chat)
web.settings.javaScriptEnabled = true
web.settings.domStorageEnabled = true            // required: no session without it
web.settings.mediaPlaybackRequiresUserGesture = false
web.webViewClient = WebViewClient()              // otherwise the system browser opens
web.loadUrl("https://reactive.chat/embed/SITE_KEY")

domStorageEnabled non è facoltativo: il widget memorizza i propri ID nello spazio di archiviazione della WebView. Senza questa impostazione, ogni avvio inizia una nuova conversazione.

Trasmettere l’utente che ha effettuato l’accesso

Mai tramite l’indirizzo. Un hash in un URL finisce nella cronologia, nei registri e negli header Referer. Trasmetta l’identità tramite JavaScript dopo il caricamento. È il Suo server a calcolare userHash (Identificare i visitatori): il segreto non deve stare nel pacchetto dell’app, perché le app possono essere analizzate. Faccia recuperare all’app i tre valori dal Suo server al momento dell’accesso.

// Android, in onPageFinished
web.evaluateJavascript(
    """ReactiveChat("identify",{userId:"$id",name:"$name",userHash:"$hash",exp:$exp});""",
    null)
// iOS, in webView(_:didFinish:)
web.evaluateJavaScript(
    "ReactiveChat(\"identify\",{userId:\"\(id)\",name:\"\(name)\",userHash:\"\(hash)\",exp:\(exp)});")

Si assicuri di eseguire correttamente l’escape dei valori per JavaScript (il modo più semplice è serializzarli come JSON nell’app). Funziona anche una chiamata precedente: la coda ReactiveChat.q la accetta prima che il widget sia caricato.

Che cosa cambia in una WebView

Trasmettere gli eventi all’app

Può inoltrare gli eventi del widget alla Sua app tramite un bridge JavaScript, ad esempio per impostare un badge per i messaggi non letti:

// Android: register web.addJavascriptInterface(Bruecke(), "App") beforehand
web.evaluateJavascript(
    "ReactiveChat('on','unread',function(e){ App.ungelesen(e.count); });", null)

Prosegua: Smart Answer

Zadnje ažuriranje: