2016-10-11 6 views
0

didRegisterForRemoteNotificationsWithDeviceTokenにあるトークンをサーバーに送信しようとしています。しかし、送信中にエラーが発生しました:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (Foundation._SwiftNSData)。リクエストの場合は、Alamofireフレームワークを使用します。私のコードは:プッシュ通知のトークンをサーバーに送信します。 Alamofireエラー

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)") 
+1

NSDataを文字列に変換し、サーバー(http://stackoverflow.com/questions/4994302/didregisterforremotenotificationswithdevicetoken-doesnt-invoke-on-calling-regi)に送信できます。サーバーにデータとして送信する場合は、multipartform upload(http://stackoverflow.com/questions/26121827/uploading-file-with-parameters-using-alamofire)を試してください。 – vishnuvarthan

+0

@vishnuvarthan私の更新を見てください。 – RomanHouse

+0

これを使用して文字列に変換します。 http://stackoverflow.com/questions/9372815/how-can-i-convert-my-device-token-nsdata-into-an-nsstring – vishnuvarthan

答えて

-1

を持っているあなたのプロジェクトのappDelegate didRegisterForRemoteNotificationsWithDeviceTokenの内側に取​​得しているdeviceTokenNSDataオブジェクトです。そのNSDataオブジェクトから実際のトークンStringを抽出するには、次のコードを使用します。

let tokenChars = UnsafePointer<CChar>(deviceToken.bytes) 
    var tokenString: String = "" 
    for i in 0..<deviceToken.length { 
    tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]]) 
    } 
    print("This is My Device Token for Push notification -", tokenString) 

ここで、tokenStringは、あなたが実際に探しているトークンです。これを任意のキーと共にサーバーに送信してください。

私はSwift 2.2でXcode 7.3.1を使用しています。要件に応じて自由に変更してください。

ありがとう、 これは助けました。

+0

なぜ訂正しないNSDataオブジェクトを送信していますか? – vishnuvarthan

+0

あなたは、なぜ私が手順を説明しようとしていたかというトークン文字列を送ろうとしています。 – Tuhin

+0

あなたはnsdataとしてあなたのトークンを送ることもできます。yは文字列でなければなりませんか?データとしてトークンを送ることの欠点はありますか? – vishnuvarthan

関連する問題