Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS上的IBM Bluemix推送服务在首次注册该服务时会导致应用程序崩溃_Ios_Push Notification_Ibm Cloud_Ibm Mobile Services - Fatal编程技术网

iOS上的IBM Bluemix推送服务在首次注册该服务时会导致应用程序崩溃

iOS上的IBM Bluemix推送服务在首次注册该服务时会导致应用程序崩溃,ios,push-notification,ibm-cloud,ibm-mobile-services,Ios,Push Notification,Ibm Cloud,Ibm Mobile Services,我在bluemix上使用新的推送通知服务,使用iOS设备 设备注册成功。当我检查REST-API时,我会看到设备ID、令牌等 但是,在设备上运行iOS应用程序会在首次运行和注册时导致应用程序崩溃 崩溃发生在CDVMFPPush.swift中func-didRegisterForRemoteNotifications(deviceToken:NSData) 在第309行(让pushToken=response.responseJson[“token”]as!String) 我在这个函数中执行了打印

我在bluemix上使用新的推送通知服务,使用iOS设备

设备注册成功。当我检查REST-API时,我会看到设备ID、令牌等

但是,在设备上运行iOS应用程序会在首次运行和注册时导致应用程序崩溃

崩溃发生在
CDVMFPPush.swift中
func-didRegisterForRemoteNotifications(deviceToken:NSData)
在第309行(
让pushToken=response.responseJson[“token”]as!String

我在这个函数中执行了
打印(response)
,responseJson似乎只包含设备ID和用户ID。令牌不见了。 当我再次使用RESTAPI执行相同的请求时,响应似乎已经完成

我认为由于这个错误,推送注册没有完成,因为当我尝试在沙盒模式下运行服务时,我没有收到任何通知

有什么想法吗

(附注:我检查了这个解决方案——设置了链接器标志[-ObjC])

这是来自我的控制台的请求(应用程序id/密码/设备已编辑)


我们已经更新了MFPPush iOS框架来解决这个问题,并且MFPPush Cordova插件已经更新,以包含这些修复。我们怀疑造成崩溃的原因是通过回调向您发送了第二个
imfrespose
对象,而这第二个imfrespose的responseJson没有您看到的导致崩溃的令牌。这些变化应该解决这个问题

更新插件最简单的方法就是删除旧插件并重新添加,您应该在
IBMMFP push的
1.0.14版
上查看修复程序

可以在相关的Github上看到今天早上的更新

当您说设备注册成功,但当您使用iOS应用程序时,设备注册不成功,请您澄清您的意思?您使用的注册方式是什么?当你说iOS应用程序是指bluemix示例还是自定义代码时,我在xcode控制台中收到一条消息,设备已成功注册。另外,当我检查RESTAPI时,我可以在设备列表中看到设备的ID(当我通过REST删除它时,我可以使用相同的ID再次注册它)。当我尝试发送测试消息(通过REST或PHP)时,设备不会显示通知,尽管我从服务收到了“message sent successfully”消息。这是用cordova制作的自定义代码。我不知道这一切是否都相关。真正重要的是,当设备第一次注册时,应用程序在上面提到的线路上崩溃。如果你想重新运行应用程序并将你的应用程序ID(意味着面向公众)传递给我,我可以查看推送服务后端日志,看看是什么促使它发送错误的响应json。如果您对此感到不舒服,或者在此期间,我建议您尝试运行hellopush cordova示例,看看这是否适合您。谢谢你的回答。Bluemix服务似乎正在返回正确且完整的JSON集(我可以看到,在控制台中,responseJson和«Response text:»都返回了完整的JSON集)。只有在didRegisterForRemoteNotifications(deviceToken:NSData)-方法中,response.responseJson不接收完整的集合,而只接收用户ID和设备ID。我要检查hellopush应用程序,看看它是否也在那里发生……好的,我安装并测试了hellopush应用程序——我得到了相同的结果。在新的寄存器上,应用程序在第307行的DidRegisterForRemotonifications中的同一位置崩溃-让pushToken=response.responseJson[“token”]as!字符串令牌不可用。谢谢James。安装了更新,应用程序不再崩溃。我通过cordova删除了插件,并按照建议再次添加。然而,当我做一个«cordova插件列表»时,它仍然会显示插件的旧版本(1.0.13)?奇怪。。。不过,问题似乎已经解决了
Response text: {"createdTime":"2016-06-07T15:28:55Z","lastUpdatedTime":"2016-06-07T15:28:55Z","createdMode":"API","deviceId":"xxxx","userId":"","token":"xxxx","platform":"A","href":"https://myapp.mybluemix.net:443/imfpush/v1/apps/xxxx/devices/xxxx"}
httpStatus: 201
responseHeaders: {
    Connection = "Keep-Alive";
    "Content-Type" = "application/json";
    Date = "Tue, 07 Jun 2016 15:28:55 GMT";
    Location = "https://myapp.mybluemix.net:443/imfpush/v1/apps/xxxx/devices/xxxx";
    "Transfer-Encoding" = Identity;
    "X-Backside-Transport" = "OK OK";
    "X-Global-Transaction-ID" = xxxx;
    "X-Powered-By" = "Servlet/3.0";
}
responseJson: {
    deviceId = "xxxxx";
    userId = "";
}