我正在尝试找出如何使用Codename One服务器推送正确的通知。我想发送基本上看起来像LocalNotifications的通知 - 包括标题,正文,徽章等。
然而,在documentation推送服务器中,似乎只有一个字段有关通知有效负载:
Q1:如何推送(服务器端通过Codename One服务器)并显示(Codename One应用程序)来自服务器的带标题和正文的通知?
我也希望能够在有效负载中发送和接收自定义数据,例如引用一些应用程序内容,应该在应用程序“打开”特定推送通知时在应用程序中打开。
Q2:我可以发送任何基本上作为通知主体的内容,甚至是我自己的JSON吗?
在Codename One API中,有一个回调接口PushCallback,特别是方法void push(String value)
。在将通知有效负载显示为LocalNotification之前,此回调是否完全用于“预处理/解析”通知负载?
感谢。
答案 0 :(得分:2)
你可以在Codename One中发送各种types of push messages,即0,1,2,3,4,5,100和101.
如果您需要标题和正文,请将推送类型设置为 4
,并将您的标题和正文与 ;
分开有效载荷。
如果您需要推送一些可用于在后台操作应用的隐藏内容,请选择推送类型 3
。使用 ;
分隔可见和隐藏的有效负载。隐藏部分是您放置JSON字符串的位置,只需确保vissible message
不以 {
或 [
。 php
有效负载示例如下所示:
$vissibleMsg = "Cum ut quia delectus libero hic.";
$jsonString = json_encode(array("action" => "openMainForm", "id" => "1", "message" => $vissibleMsg));
$payload = $vissibleMsg . ";" . $jsonString;
在push(String value)
中,阅读隐藏的JSON内容,如下所示:
@Override
public void push(String value) {
Display.getInstance().callSerially(() -> {
if (value.startsWith("{") || value.startsWith("[")) {
try {
JSONObject response = new JSONObject(value);
switch (response.getString("action")) {
case "openMainForm":
//do whatever you want here
break;
default:
//perform default action here
break;
}
} catch (JSONException err) {
Log.e(err);
}
}
});
}
如果您需要隐藏的内容和带有标题和正文的可见内容,那么您必须根据我在上面分享的链接分别使用类型2和类型4发送两次推送。