Документация
ОС Аврора 5.1.5

Обмен сообщениями

/*
 * SPDX-FileCopyrightText: Copyright 2024 Open Mobile Platform LLC <community@omp.ru>
 * SPDX-License-Identifier: Proprietary
 */
 
/**
 * @file
* @brief Содержит пример использования асинхронных сообщений
 */
 
import QtQuick 2.0
import Sailfish.Silica 1.0
import ru.auroraos.WebView 1.0
 
Page {
    id: page
 
    SilicaFlickable {
        anchors.fill: parent
        contentHeight: column.height
 
        Column {
            id: column
 
            anchors.fill: parent
            spacing: Theme.paddingLarge
 
            PageHeader {
title: "Асинхронные сообщения"
            }
 
            Button {
                property int nativeCounter: 0
 
                anchors.horizontalCenter: parent.horizontalCenter
text: "Отправка async-сообщения из нативного кода"
 
                onClicked: {
                    nativeCounter++
                    webView.sendAsyncMessage("msgToBeProcessedInWebpageJS", nativeCounter)
                }
            }
 
            Label {
                id: webCounter
text: "Получено из сети: -"
 
                function updateText(counter) {
text = "Получено из сети: " + counter
                }
            }
 
            WebItem {
                id: webView
                width: parent.width
                height: page.height - webView.y
 
                url: "/some.webpage.with.handler.functions"
 
                Component.onCompleted: {
                    webView.addMessageListener("msgToBeProcessedInWebpageJS");
                    webView.addMessageListener("msgToBeProcessedInQML");
                }
            }
 
            Connections {
                target: webView
                onRecvAsyncMessage: {
                    switch (name) {
                        case "msgToBeProcessedInWebpageJS":{
                            webView.runJavaScript(
"receiveMessage(" + data + ")", // произвольная функция, определяемая загруженной веб-страницей
                                function(arg){ },
                                function(arg){ })
                            }
                        break    
                        case "msgToBeProcessedInQML":{
                            webCounter.updateText(data);}
                        break  
                    }    
                }
            }
        }
    }
}

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.