1

通过 Worklight 发送推送通知时,我面临以下问题。

  1. 推送消息长度非常有限 - 大约 65 个字符
  2. 在设备上接收到的有效负载消息已删除所有间距

就像我发送了“这是一条测试消息”,但在设备上它收到了“ Thisisatestmessage

现在,特别是工作灯中推送消息的限制大小是多少,我知道苹果公司说 256 字节。但是 Worklight 允许什么?

以及为什么有效负载正在删除空格。即使我正在从后端 java 服务发送消息

我的推送适配器:

function generalNotification(userId, msgTitle, MsgContents, org, logo){
    var userSubscription = WL.Server.getUserNotificationSubscription('aahadPushAdapter.GeneralPushSource', userId);
    if (userSubscription==null){
        return { result: "No subscription found for user :: " + userId };
    }
    WL.Logger.debug("Sending Push >> userId:: " + userId + ", Message:: " + MsgContents);
    WL.Server.notifyAllDevices(userSubscription, {
        badge: 1,
        sound: "sound.mp3",
        activateButtonLabel: "Read",
        alert: msgTitle,
        payload: {
            msg : MsgContents,o:org,l:logo
        }
    });
    return { result: "Notification sent to user :: " + userId };
}

的后端 Java 代码

DataAccessService service = WorklightBundles.getInstance().getDataAccessService();
String parm = "['" + userID + "','"+ msgTitle + "','"+ msgContents+ "','"+org + "','"+logo +"']";
ProcedureQName pushMethod = new ProcedureQName("aahadPushAdapter","transNotification");
InvocationResult results = service.invokeProcedure(pushMethod, parm);
jsonObj = results.toJSON();
msg = "Push Sent successfully to " + userID + " " + (String)jsonObj.get("");

请检查此代码并提出建议,如果此处缺少某些内容?

谢谢

4

2 回答 2

0
  1. 在 IBM Worklight 入门培训材料中提供的 Push Notifications 示例应用程序中是否也会出现空格剥离?因为对我来说,它没有。

    如果它只发生在您的应用程序中,则需要了解您是如何处理消息的。

  2. 正如我在其他地方的评论中向您提到的,Worklight 没有设置任何限制 - 每个 PNS(APNS、MSPN、GCM)都有自己的限制。

这 256 个字节不仅用于有效负载的消息部分,还用于整个有效负载,因此对于消息部分,剩下的可能只有 65 个字符,但同样,这不在 Worklight 的控制范围内。

我自己还没有这样做,但是您可以开始剥离有效负载并查看它何时失败,从 Worklight 的角度来看,这将是您的最小有效负载。

原则上,该消息并不意味着很长。

另一种可能增加您可以在消息中传递的内容(在有效负载的剩余大小中)的另一种方法是使用别名,以便传递更少的信息,从而为消息保留更多空间。

于 2013-05-30T11:02:25.943 回答
0

APNS 有效负载中的空格剥离似乎是一个缺陷。我在我的应用程序中看到了相同的行为,并且能够在入门材料中重现它。作为一种解决方法,我将“_”放在有效负载中作为空格的占位符,然后在 worklight 客户端中删除它们。

于 2013-06-03T14:59:23.167 回答