Πώς μπορούμε να βοηθήσουμε;

Περιγράψτε σύντομα το θέμα – θα σας απαντήσουμε με email.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Στην αρχική σελίδα

Mobil uygulamalar: WebView içinde sohbet

reactive.chat hizmetini iOS veya Android uygulamasına ekleme: WKWebView veya WebView içinde /embed/SITE_KEY sayfası, JavaScript ile kimlik, dosya yükleme, geri düğmesi ve webhook üzerinden anlık bildirim.

Uygulamalar için yerel SDK yoktur. Bunun yerine uygulamanız WebView için özel hazırlanmış sayfayı yükler:

https://reactive.chat/embed/SITE_KEY

Sayfada çerçeve, gezinme veya sohbet düğmesi yoktur; widget ekranı kaplar ve hemen açıktır. Web sitenizle aynı sohbettir: aynı proje, aynı tasarım, aynı gelen kutusu. Site anahtarını hesabınızda Proje → Kurulum altında bulursunuz.

Sayfanın özellikleri:

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

WebView öğesini güvenli alan yerleşim kılavuzuna değil, tüm alana yayın; sayfa kenar boşluğunu kendisi hesaba katar.

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 isteğe bağlı değildir: widget kimliklerini WebView depolamasında saklar. Olmadan her başlatma yeni sohbet açar.

Oturum açmış kullanıcıyı iletme

Asla adres üzerinden iletmeyin. URL’deki özet geçmişe, günlüklere ve Referer başlıklarına girer. Kimliği yüklemeden sonra JavaScript üzerinden iletin. userHash değerini sunucunuz hesaplar (Ziyaretçileri tanımlama); uygulamalar parçalarına ayrılabildiğinden gizli anahtar uygulama paketinde bulunmamalıdır. Uygulamanız oturum açılırken üç değeri sunucunuzdan alsın.

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

Değerleri JavaScript için doğru kaçışla kodladığınızdan emin olun (en kolayı uygulamanızda JSON olarak serileştirmektir). Daha erken çağrı da çalışır: ReactiveChat.q kuyruğu widget yüklenmeden önce kabul eder.

WebView içinde farklı olanlar

Olayları uygulamaya aktarma

Widget’ın olaylarını JavaScript köprüsüyle uygulamanıza iletebilirsiniz; örneğin okunmamış mesaj rozeti ayarlamak için:

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

Sonraki: Smart Answer

Τελευταία ενημέρωση: