Я пытаюсь отправить токен, который я получил в didRegisterForRemoteNotificationsWithDeviceToken
, на сервер. Но я получил ошибку при отправке: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (Foundation._SwiftNSData)
. Для запросов я использую рамки Alamofire
. Мой код:Отправка маркера push-уведомлений на сервер. Alamofire error
func signUp(withToken token: Data, completion: (Error) -> Void) {
let parameters: Parameters = ["registration_id": token]
print("token = \(token)")
Alamofire.request(baseUrl + signUpPath, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON(completionHandler: {response in
})
}
Print
показывает мне: token = 32 bytes
. Какие-либо предложения? Возможно, мне нужны дополнительные шаги с Data
, прежде чем отправлять их на сервер?
UPDATE
Я попытался преобразовать маркер NSString
типа, но получил nil
let tokenNSString: NSString? = NSString(data: token, encoding: String.Encoding.utf8.rawValue)
print("nsstrgin from token = \(tokenNSString)")
Вы можете скрывать NSData в String и отправлять его на сервер (http://stackoverflow.com/questions/4994302/didregisterforremotenotificationswithdevicetoken-doesnt-invoke-on-calling-regi). Если вы хотите отправить его в качестве данных на сервер, попробуйте многостраничную загрузку (http://stackoverflow.com/questions/26121827/uploading-file-with-parameters-using-alamofire). – vishnuvarthan
@vishnuvarthan см. Мое обновление, пожалуйста. – RomanHouse
Используйте это для преобразования в строку. http://stackoverflow.com/questions/9372815/how-can-i-convert-my-device-token-nsdata-into-an-nsstring – vishnuvarthan