推送通知导致应用程序崩溃 我使用IBM移动平台第一个平台7创建了一个应用程序,它具有推送通知支持。此时,iOS设备可以在应用程序未运行时成功接收通知。但是,如果我触摸通知中的横幅消息,应用程序将启动,然后立即崩溃。类似地,如果应用程序已经在运行,并且推送通知到达,则应用程序将立即崩溃

推送通知导致应用程序崩溃 我使用IBM移动平台第一个平台7创建了一个应用程序,它具有推送通知支持。此时,iOS设备可以在应用程序未运行时成功接收通知。但是,如果我触摸通知中的横幅消息,应用程序将启动,然后立即崩溃。类似地,如果应用程序已经在运行,并且推送通知到达,则应用程序将立即崩溃,ios,push-notification,ibm-mobilefirst,Ios,Push Notification,Ibm Mobilefirst,奇怪的是,起初我并不总是看到这种行为。然而,在上述情况下,现在每次都会发生这种情况 我怎样才能纠正这个问题?我需要安装补丁吗?我已卸载/重新安装该应用程序,但未成功 以下是我通过Worklight REST API发送消息发送的有效负载: { "message" : { "alert" : "Test message", }, "settings" : { "apns" : { "badge" : 1, "iosActionKey" : "Ok

奇怪的是,起初我并不总是看到这种行为。然而,在上述情况下,现在每次都会发生这种情况

我怎样才能纠正这个问题?我需要安装补丁吗?我已卸载/重新安装该应用程序,但未成功

以下是我通过Worklight REST API发送消息发送的有效负载:

{
  "message" : {
    "alert" : "Test message",
  },
  "settings" : {
    "apns" : {
      "badge" : 1,
      "iosActionKey" : "Ok",
      "payload" : "",
      "sound" : "song.mp3"
    }
  },
  "target" : {
    "consumerIds" : [],
    "deviceIds" : [ ],
    "platforms" : [ "A"],
    "tagNames" : [],
  },
}
以下是来自我的设备的错误报告:

> apsd[93] <Error>: Property list invalid for format: 200 (property lists cannot contain objects of type 'CFNull')   [209] <Warning>:
> [DEBUG] [WL_PUSH] -[Push processRemotePushNotification:] in Push.m:426
> :: Push: didReceive Remote notification   [209] <Warning>: [FATAL]
> [WORKLIGHT] Uncaught Exception: *** -[__NSArrayI objectAtIndex:]:
> index 1 beyond bounds [0 .. 0]   [209] <Error>: *** Terminating app
> due to uncaught exception 'NSRangeException', reason: '***
>     -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'     *** First throw call stack:     (0x1863cc2d8 0x1980980e4 0x1862afb34
> 0x1002a5afc 0x1002a558c 0x1872c0180 0x18638412c 0x186383ddc
> 0x186381828 0x1862ad2d4 0x18fd036fc 0x18aeaaf40 0x1000ac0e0
> 0x198742a08)   ReportCrash[210] <Error>: task_set_exception_ports(B07,
> 400, D03, 0, 0) failed with error (4: (os/kern) invalid argument)  
> ReportCrash[210] <Notice>: ReportCrash acting against PID 209  
> ReportCrash[210] <Notice>: Formulating crash report for process [209] 
> com.apple.xpc.launchd[1]
> (UIKitApplication:com.companyname.appname.qa[0xc100][209]) <Notice>:
> Service exited due to signal: Abort trap: 6   ReportCrash[210]
> <Notice>: Saved report to
> /var/mobile/Library/Logs/CrashReporter/_2015-08-07-231518_.ips  
> SpringBoard[54] <Warning>: Application
> 'UIKitApplication:com.companyname.appname.qa[0xc100]' crashed.
apsd[93]:属性列表对于以下格式无效:200(属性列表不能包含“CFNull”类型的对象)[209]: >推送中的[DEBUG][WL_PUSH]-[PUSH processRemotePushNotification:]m:426 >::推送:接收远程通知[209]:[致命] >[工作灯]未捕获异常:**-[\uu NSArrayI objectAtIndex:]: >索引1超出范围[0..0][209]:***正在终止应用程序 >由于未捕获的异常“NSRangeException”,原因:'*** >-[[uuuu NSArrayI objectAtIndex:]:索引1超出边界[0..0]'***第一次抛出调用堆栈:(0x1863cc2d8 0x1980980e4 0x1862afb34) >0x1002a5afc 0x1002a558c 0x1872c0180 0x18638412c 0x186383ddc >0x186381828 0x1862ad2d4 0x18fd036fc 0x18aeaaf40 0x10000AC0E0 >0x198742a08)报告崩溃[210]:任务设置异常端口(B07, >400,D03,0,0)失败,出现错误(4:(os/kern)无效参数) >ReportCrash[210]:针对PID 209执行的ReportCrash >ReportCrash[210]:为进程[209]制定崩溃报告 >com.apple.xpc.launchd[1] >(UIKitApplication:com.companyname.appname.qa[0xc100][209]): >由于信号:中止陷阱:6 ReportCrash[210]而退出服务 >:将报告保存到 >/var/mobile/Library/Logs/CrashReporter/_2015-08-07-231518.ips >跳板[54]:应用 >“UIKitApplication:com.companyname.appname.qa[0xc100]”崩溃。
如果客户端接收的有效负载格式不正确,则会出现预期的行为。 作为第一步,确保有效负载的格式正确,如下面链接中所述-


客户端处理程序已经在框架中定义,您不需要自己实现它。要处理有效负载,请在客户端使用适当的JS回调函数。如果使用标记/广播通知,这将是

跟踪的,在目标之后,并且没有apn键。文档还列出了“actionKey”而不是“isActionKey”:处理推送通知有效负载的代码是什么样子的?这样,当抛出异常时,您将确切地知道它来自哪一行。我仍然得到相同的错误。我删除了json,现在有了以下内容:{code>{“message”:{“alert”:“Test message”},设置:{“apns”:{“actionKey”:“Ok”,“payload”:“}”,目标:{“consumerIds”:[],“deviceid”:[],“platforms”:[“A”],“标记名”:[]}我不知道你说的“没有apn密钥”是什么意思。。。我有我的apns证书,并且生成了.p12文件。我需要在json中指定另一个字段吗?哇,我可以通过更正有效负载来修复它。尽管我看到的许多示例表明可以使用空字符串,但它实际上需要是javascript对象,或者根本不存在,否则会使应用程序崩溃。我现在在应用程序运行时收到通知,但不会崩溃@IdanAdar,你知道我怎样才能获得对这条消息的某种类型的应用程序内响应,比如警报吗?我可以在控制台中看到它接收消息,但默认情况下不会发生任何事情。我需要在应用程序委托中定义正确的方法吗?谢谢你的帮助!