Codename One send&显示推送通知

时间:2017-03-28 12:40:45

标签: java android ios push-notification codenameone

我正在尝试找出如何使用Codename One服务器推送正确的通知。我想发送基本上看起来像LocalNotifications的通知 - 包括标题,正文,徽章等。

然而,在documentation推送服务器中,似乎只有一个字段有关通知有效负载:

  • 正文 - 邮件正文。

Q1:如何推送(服务器端通过Codename One服务器)并显示(Codename One应用程序)来自服务器的带标题和正文的通知?

我也希望能够在有效负载中发送和接收自定义数据,例如引用一些应用程序内容,应该在应用程序“打开”特定推送通知时在应用程序中打开。

Q2:我可以发送任何基本上作为通知主体的内容,甚至是我自己的JSON吗?

在Codename One API中,有一个回调接口PushCallback,特别是方法void push(String value)。在将通知有效负载显示为LocalNotification之前,此回调是否完全用于“预处理/解析”通知负载?

感谢。

1 个答案:

答案 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发送两次推送。