كيف يمكننا المساعدة؟

يرجى توضيح الموضوع بإيجاز، وسنرد بالبريد الإلكتروني.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
إلى الصفحة الرئيسية

Mobilní aplikace: chat ve WebView

Jak začlenit reactive.chat do aplikace pro iOS nebo Android – přes stránku /embed/SITE_KEY ve WKWebView nebo WebView, s identitou přes JavaScript, nahráváním souborů, tlačítkem Zpět a push oznámeními přes webhooky.

Pro aplikace neexistuje nativní SDK. Vaše aplikace místo něj načte stránku vytvořenou speciálně pro WebView:

https://reactive.chat/embed/SITE_KEY

Stránka nemá rám, navigaci ani tlačítko chatu: widget vyplní obrazovku a rovnou se otevře. Je to stejný chat jako na vašem webu – stejný projekt, stejný design, stejná schránka. Klíč webu najdete v účtu v části Projekt → Instalace.

Vlastnosti stránky:

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

Umístěte WebView přes celou plochu, nikoli do oblasti vymezené safe area layout guide – stránka zohledňuje odsazení sama.

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 není volitelné: widget ukládá svá ID do úložiště WebView. Bez něj každé spuštění zahájí novou konverzaci.

Předání přihlášeného uživatele

Nikdy přes adresu. Hash v URL se dostane do historie, protokolů a hlaviček Referer. Identitu předejte po načtení přes JavaScript. userHash vypočítá váš server (Identifikace návštěvníků) – tajný klíč nepatří do balíčku aplikace, protože aplikace lze rozebrat. Při přihlášení nechte aplikaci načíst tři hodnoty z vašeho serveru.

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

Dbejte na správné escapování hodnot pro JavaScript (nejsnáze jejich serializací do JSON v aplikaci). Funguje i dřívější volání: fronta ReactiveChat.q ho přijme před načtením widgetu.

Co je ve WebView jiné

Předání událostí do aplikace

Události widgetu můžete předávat své aplikaci přes JavaScriptový most, například pro nastavení odznaku nepřečtených zpráv:

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

Dále: Smart Answer

آخر تحديث: