通过Worklight发送推送通知时,我面临以下问题。
就像我发送了“这是测试消息”,但在设备上收到的是“ 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("");
请检查此代码并建议,如果此处缺少某些内容?
感谢
答案 0 :(得分:0)
在Push Notifications sample application provided in the IBM Worklight Getting Started training material中是否也会发生空格剥离?因为对我来说,它没有。
如果仅在您的应用程序中发生,则需要了解您处理邮件的方式。
正如我在其他地方的评论中提到的那样,Worklight没有任何限制 - 每个PNS(APNS,MSPN,GCM)都有其自身的限制。
256个字节不仅用于有效载荷的消息部分,而且用于整个有效载荷,因此对于消息部分而言,剩下的只有65个字符,但同样,这不在Worklight的控制。
我自己还没有这样做,但你可以开始剥离有效载荷,看看它何时失败,这将是你从Worklight的角度来看的最小有效载荷。
这个信息原则上并不长。
另一种可能增加消息中传递内容的方法(在有效负载的剩余大小中)是使用别名以便传递更少的信息,从而为消息留出更多空间。
答案 1 :(得分:0)
APNS有效载荷中的空间剥离似乎是一个缺陷。我在我的应用程序中看到了相同的行为,并且能够在入门材料中重现它。作为一种解决方法,我将“_”作为空格的占位符放在有效负载中,然后在worklight客户端中删除它们。