Codename One发送和显示推送通知

4
我正在尝试了解如何使用Codename One服务器推送适当的通知。我想发送类似于LocalNotifications的通知-具有标题、正文、徽章等。
然而,在推送服务器的文档中,似乎只有一个与通知负载相关的字段:
- 正文 - 消息正文。
问题1:如何通过Codename One服务器推送(服务器端)并显示(Codename One应用程序)带有来自服务器的标题和正文的通知?
我还希望能够在负载中发送和接收自定义数据,例如引用一些应用程序内容,当从特定推送通知“打开”应用程序时,应在应用程序中打开该内容。
问题2:我可以将基本上任何内容作为通知正文发送,甚至是我的JSON吗?
在Codename One API中,有这个回调接口PushCallback,具体方法是void push(String value)。这个回调是否专门用于在将通知作为本地通知显示之前对通知负载进行“预处理/解析”?谢谢。
1个回答

2

在Codename One中,您可以发送各种推送消息类型,包括0、1、2、3、4、5、100和101。

如果您需要标题和正文,请将推送类型设置为4,并在有效负载中使用;分隔标题和正文。

如果您需要带有一些隐藏内容的推送,可以选择推送类型3。使用;分隔可见和隐藏负载。隐藏部分是您放置JSON字符串的地方,只需确保visible 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发送两次推送,具体请参考我上面分享的链接。

我完全忽视了推送通知文档的这一部分。非常感谢提供的示例。 - Brand88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接