हम कैसे मदद करें?

संक्षेप में बताएँ – हम ईमेल से संपर्क करेंगे।

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
मुख्य पृष्ठ पर

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

अंतिम अपडेट: