iOS デバイスを使用して、bluemix で新しいプッシュ通知サービスを使用しています。
デバイスは正常に登録されます。REST-API で確認すると、デバイス ID やトークンなどが表示されます。
ただし、デバイスで iOS アプリを実行すると、最初の実行時と登録時にアプリがクラッシュします。
クラッシュは
309 行目で発生します ( CDVMFPPush.swift
) 。func didRegisterForRemoteNotifications(deviceToken: NSData)
let pushToken = response.responseJson["token"] as! String
この関数で実行したprint(response)
ところ、responseJson には deviceId と userId のみが含まれているようです。トークンがありません。再度 REST-Api を使用して同じ要求を行うと、応答が完了したように見えます。
サンドボックスモードでサービスを実行しようとしても通知が届かないため、このエラーが原因でプッシュ登録が完了していないと思います。
何か案は?
(追記: この解決策を確認しました - Bluemix の IBM Mobile First Push サービスにデバイスを登録しようとすると、iOS アプリケーションがクラッシュします- リンカー フラグが設定されています [-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 = "";
}