我使用iOS设备在bluemix上使用新的推送通知服务。
设备注册成功。当我查看REST-API时,我会看到设备ID,令牌等等。
但是,在设备上运行iOS应用程序会在首次运行和注册时崩溃应用程序。
崩溃发生在CDVMFPPush.swift
func didRegisterForRemoteNotifications(deviceToken: NSData)
在第309行(let pushToken = response.responseJson["token"] as! String
)。
我在这个函数中做了print(response)
,似乎responseJson只包含deviceId和userId。令牌丢失。
当我再次使用REST-Api执行相同的请求时,响应似乎已完成。
我认为由于此错误,推送注册无法完成,因为当我尝试在沙盒模式下运行服务时,我没有收到任何通知。
有什么想法吗?
(P.S。我检查了这个解决方案 - iOS Application crashes when trying to register the device to IBM Mobile First Push service on Bluemix - 链接器标志设置为[-ObjC])
这是来自我的控制台的请求(app-id / secret / device已编辑)
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 = "";
}
答案 0 :(得分:1)
我们已更新MFPPush iOS Framework以解决此问题,MFPPush Cordova插件已更新,以包含这些修复程序。我们怀疑崩溃的原因是你通过回调发送了第二个IMFResponse
对象,而第二个IMFResponse的responseJson没有你看到导致崩溃的令牌。这些更改应解决该问题。
更新插件的最简单方法就是删除旧插件并重新添加,您应该使用1.0.14
的{{1}}版本来查看修复程序。
也可以在今天早上看到相关Github上的更新 https://github.com/ibm-bluemix-mobile-services/bms-clientsdk-cordova-plugin-push