چطور می‌توانیم کمک کنیم؟

کوتاه بفرمایید موضوع چیست؛ از طریق ایمیل با شما تماس می‌گیریم.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
رفتن به صفحه اصلی

Aplicativos móveis: o chat em uma WebView

Como integrar o reactive.chat a um aplicativo iOS ou Android: pela página /embed/SITE_KEY em uma WKWebView ou WebView, com identidade por JavaScript, uploads, botão Voltar e push por webhooks.

Para aplicativos, não há SDK nativo. Em vez disso, seu aplicativo carrega uma página criada especificamente para uma WebView:

https://reactive.chat/embed/SITE_KEY

A página não tem moldura, navegação nem botão do chat: o widget preenche a tela e já começa aberto. É o mesmo chat do seu site: mesmo projeto, mesmo design, mesma caixa de entrada. A chave do site está na conta, em Projeto → Instalação.

Propriedades da página:

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

Posicione a WebView sobre a área inteira, não dentro do guia de layout da área segura: a página já considera os recuos por conta própria.

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 não é opcional: o widget armazena seus IDs no armazenamento da WebView. Sem isso, cada abertura inicia uma nova conversa.

Passar o usuário conectado

Nunca pelo endereço. Um hash em uma URL acaba no histórico, em logs e em cabeçalhos Referer. Passe a identidade por JavaScript depois do carregamento. Seu servidor calcula o userHash (Identificar visitantes); o segredo não deve ficar no pacote do aplicativo, pois aplicativos podem ser desmontados. Faça seu aplicativo buscar os três valores no servidor ao entrar.

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

Garanta o escape correto dos valores para JavaScript (a forma mais simples é serializá-los como JSON no aplicativo). Uma chamada anterior também funciona: a fila ReactiveChat.q a aceita antes de o widget carregar.

O que muda em uma WebView

Receber eventos no aplicativo

Você pode repassar os eventos do widget ao aplicativo por uma ponte JavaScript, por exemplo, para definir um indicador de mensagens não lidas:

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

A seguir: Smart Answer

آخرین به‌روزرسانی: