自定义 Tizen 推送消息
Posted
技术标签:
【中文标题】自定义 Tizen 推送消息【英文标题】:Custom Tizen push message 【发布时间】:2021-01-10 16:41:48 【问题描述】:我正在开发 Tizen Web 应用程序并使用了 Tizen 推送 API。 我成功地收到了来自 Tizen 推送服务器的警报消息,但是想如何自定义推送消息。 我使用了下面的代码
"badgeOption=INCREASE&badgeNumber=1&action=ALERT&alertMessage=Hi"
如何自定义推送消息?
【问题讨论】:
【参考方案1】:推送消息可能的内容在这里详细描述https://docs.tizen.org/application/native/guides/messaging/push-server/ 不幸的是,该指南适用于本机应用程序,但其中大部分内容应该很容易适用于所有配置文件。
如果您想通过添加图标、更改声音或添加快速操作来自定义推送消息的外观,请参阅装饰推送通知部分。
【讨论】:
感谢您的回复。我应用了指南中描述的代码,但它在 Web 应用程序中不起作用。这是否意味着我必须将我的应用程序切换到本机应用程序? 如果您指的是带有 app_control 函数的 C 代码,您必须使用 webapi 重新创建该函数。!strcmp(a,b)
可以替换为 a!=b
并且 app_control_get_extra_data() 应替换为从 appcontorl.data[] docs.tizen.org/application/web/api/5.5/device_api/mobile/tizen/… 检索键值对。您可能需要启用接收应用程序控制请求,如本指南 docs.tizen.org/application/web/guides/app-management/… 中所述
感谢您的回复。该链接对我帮助很大。但是有没有办法在 web 应用程序中添加图标或图像来推送通知消息?
嗨,您能否具体说明一下“它在 Web 应用程序中不起作用”是什么意思?在docs.tizen.org/application/web/guides/messaging/push/… 部分中,您可以根据 Web 应用程序状态对所需行为进行描述:当应用程序关闭时,默认行为应与本机相同,当应用程序启动时,您可以处理 docs.tizen.org/application/web/api/5.5/device_api/mobile/tizen/…中的消息>
我不确定我是否正确地记得使用推送通知。快速面板中的通知是自动创建的,如果是这样,您应该将您的图像放在shared/res/
文件夹中,并将&imageTypeIcon=icon.png&
添加到您推送通知的消息字段中。【参考方案2】:
我通过以下几点准备了两个使用推送服务器和 Galaxy Watch 的工作场景。
在正在运行的 Web 应用程序中处理推送消息
-
我创建了非常简单的应用程序并应用了这些prerequisites
在我的应用程序中,我使用 test.jpg 文件创建了目录 shared/res(我的测试图标用于此场景)
我已经准备好用于向我的测试设备发送推送通知的基于 Web 的代码(请注意我用来添加自定义图标的消息):
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));
-
我已经在调试模式下启动了我的应用程序,并使用下面的代码注册了推送通知和发送消息的应用程序:
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);
-
一段时间后,notificationCallback 会引发并显示带有接收数据的控制台日志:
通知到达:"alertMessage":"Test application message","appData":"","date":"2021-01-19T10:23:11.000Z","message":" action=ALERT&imageTypeIcon=test.jpg&alertMessage=测试应用程序消息","requestId":"000001","sender":"","sessionInfo":""
-
基本场景到此结束 - 在这种情况下,您需要在应用程序中处理消息。
后台场景 - 服务自动处理推送消息
第二种情况是应用程序在后台并且推送消息由推送服务自动处理。第1-3点相同。之后,您需要将应用程序移至后台并继续第 4 点。 一段时间后,带有 test.jpg 图标的自定义通知应显示为系统通知。
【讨论】:
以上是关于自定义 Tizen 推送消息的主要内容,如果未能解决你的问题,请参考以下文章