微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义 Tizen 推送消息

如何解决自定义 Tizen 推送消息

我正在开发 Tizen Web 应用程序并使用了 Tizen 推送 API。 我成功收到了来自 Tizen 推送服务器的警报消息,但是想自定义推送消息。 我使用了下面的代码

"badgeOption=INCREASE&badgeNumber=1&action=ALERT&alertMessage=Hi"

如何自定义推送消息?

解决方法

这里详细描述了推送消息可能的内容https://docs.tizen.org/application/native/guides/messaging/push-server/ 不幸的是,该指南适用于本机应用程序,但其中大部分应该很容易适用于所有配置文件。

如果您想通过添加图标、更改声音或添加快速操作来自定义推送消息的外观,请参阅装饰推送通知部分。

,

我按照以下几点准备了两个使用推送服务器和 Galaxy Watch 的工作场景。

在运行的网络应用程序中处理推送消息

  1. 我创建了非常简单的应用程序并应用了这些 prerequisites
  2. 在我的应用程序中,我使用 test.jpg 文件(此场景的测试图标)创建了目录 shared/res
  3. 我准备了基于网络的代码,用于向我的测试设备发送推送通知(请注意我用来添加自定义图标的消息):
function sendMessage(registeredId,msg) {
    if (registeredId == undefined || msg == undefined || msg == "") {
        console.err("error registering application!");
        return;
    }
    var appId = "<<<your application package id>>>";
    var sec = "<<<your application's push server secret code>>>";

    var request = new XMLHttpRequest();
    var data = {
        "regID": registeredId,"requestID": "000001","message": "action=ALERT&imageTypeIcon=test.jpg&alertMessage="+msg
    };

    var idToUrlMap = {
        "00": "https://useast.push.samsungosp.com:8090/spp/pns/api/push","02": "https://apsoutheast.push.samsungosp.com:8090/spp/pns/api/push","03": "https://euwest.push.samsungosp.com:8090/spp/pns/api/push","04": "https://apnortheast.push.samsungosp.com:8090/spp/pns/api/push","05": "https://apkorea.push.samsungosp.com:8090/spp/pns/api/push","06": "https://apchina.push.samsungosp.com.cn:8090/spp/pns/api/push","50": "https://useast.gateway.push.samsungosp.com:8090/spp/pns/api/push","52": "https://apsoutheast.gateway.push.samsungosp.com:8090/spp/pns/api/push","53": "https://euwest.gateway.push.samsungosp.com:8090/spp/pns/api/push","54": "https://apnortheast.gateway.push.samsungosp.com:8090/spp/pns/api/push","55": "https://apkorea.gateway.push.samsungosp.com:8090/spp/pns/api/push","56": "https://apchina.gateway.push.samsungosp.com.cn:8090/spp/pns/api/push"
    };

    var url = idToUrlMap[registeredId.substring(0,2)];
    request.open("POST",url,true);

    request.setRequestHeader("Content-Type","application/json");
    request.setRequestHeader("appID",appId);
    request.setRequestHeader("appSecret",sec);
    request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
            console.log(request.responseText);
            console.log("Push Success");
        }
    };
    request.send(JSON.stringify(data));
}
  1. 我已在调试模式下启动我的应用程序,并使用以下代码注册应用程序以接收推送通知并发送消息:
    function errorCallback(response) {
        console.log("The following error occurred: " + response.name);
    }

    function registerSuccessCallback(id) {
        console.log("Registration succeeded with id: " + id);
        sendMessage(id,message || "Test application message")
    }

    function stateChangeCallback(state) {
        console.log("The state is changed to: " + state);

        if (state == "UNREGISTERED") {
            tizen.push.register(registerSuccessCallback,errorCallback);
        } else {
            var id = tizen.push.getRegistrationId();
            sendMessage(id,message || "Test application message")
        }
    }

    function notificationCallback(notification) {
        console.log("A notification arrives: " + JSON.stringify(notification));
    }

    /* Connects to push service. */
    tizen.push.connect(stateChangeCallback,notificationCallback,errorCallback);
  1. 一段时间后,notificationCallback 引发并显示包含接收数据的控制台日志:

通知到达:{"alertMessage":"Test application message","appData":"","date":"2021-01-19T10:23:11.000Z","message":" action=ALERT&imageTypeIcon=test.jpg&alertMessage=测试应用消息","re​​questId":"000001","sender":"","sessionInfo":""}

  1. 这是基本场景的结束 - 在这种情况下,您需要在应用程序内部处理消息。

后台场景 - 由服务自动处理推送消息

第二种情况是当应用程序在后台并且推送消息由推送服务自动处理时。第 1-3 点相同。之后,您需要将应用程序移至后台并继续第 4 点。 一段时间后,带有 test.jpg 图标的自定义通知应显示为系统通知。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?