Paano kami makakatulong?

Sabihin sa amin nang maikli kung tungkol saan ito—babalikan ka namin sa email.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Pumunta sa panimulang page

Mobilappar: chatten i en WebView

Så bygger du in reactive.chat i en iOS- eller Android-app – via inbäddningssidan /embed/SITE_KEY i en WKWebView eller WebView, med identitet via JavaScript, filuppladdningar, bakåtknappen och push via webhooks.

För appar finns inget inbyggt SDK. I stället laddar appen en sida som är byggd särskilt för en WebView:

https://reactive.chat/embed/SITE_KEY

Sidan har ingen ram, ingen navigering och ingen chattknapp: widgeten fyller skärmen och är öppen direkt. Det är samma chatt som på webbplatsen – samma projekt, samma utseende, samma inkorg. Webbplatsnyckeln finns i kontot under Projekt → Installation.

Sidans egenskaper:

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")!))

Lägg WebView över hela ytan, inte i safe area layout guide – sidan tar själv hänsyn till indraget.

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 är inte valfritt: widgeten lagrar sina ID:n i WebView-lagringen. Utan det startar varje öppning en ny konversation.

Skicka med den inloggade användaren

Aldrig via adressen. En hash i en URL hamnar i historiken, i loggar och i Referer-huvuden. Skicka identiteten via JavaScript efter laddningen. Din server beräknar userHash (Identifiera besökare) – hemligheten hör inte hemma i appens installationspaket eftersom appar kan plockas isär. Låt appen hämta de tre värdena från servern vid inloggning.

// 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)});")

Se till att värden kodas korrekt för JavaScript (enklast genom att serialisera dem som JSON i appen). Ett tidigare anrop fungerar också: kön ReactiveChat.q tar emot det innan widgeten har laddats.

Vad som är annorlunda i en WebView

Föra in händelser i appen

Du kan förmedla widgetens händelser till appen via en JavaScript-brygga, till exempel för att visa en indikator för olästa meddelanden:

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

Nästa: Smart Answer

Huling na-update: