0

iPhone プッシュ通知のドキュメントには、デバイス トークンを受け取る UIApplication メソッドをオーバーライドするコード スニペットがあります。

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
const void *devTokenBytes = [devToken bytes];
self.registered = YES;
[self sendProviderDeviceToken:devTokenBytes]; // custom method
}

私の質問は、独自のカスタム メソッドを実装する場合、devTokenBytes をどのように使用すればよいかということです。

NSURLConnection を使用して (おそらく) HTTP 要求を作成する必要があります。これにより、サーバー側のプロバイダー アプリにトークンが渡されます。その部分はわかりましたが、リクエストに devTokenBytes を追加する方法がわかりませんか? 私の最初の本能は、バイトを使用して String オブジェクトを作成することでしたが、NSASCIIStringEncoding を使用しようとすると、奇妙なごちゃごちゃした文字が表示されます。NSData の "bytes" メソッドの戻り値の型がポインターであることはわかりましたが、どうすればよいかわかりません。このトークンをリクエストに入れる正しい方法は何ですか?

ドキュメントには、「アプリケーションはプロバイダーに接続し、バイナリ形式でエンコードされたこのトークンを渡す必要があります」という詳細も記載されています。しかし、この方法でエンコードされたものを処理する方法がわかりません。

4

3 に答える 3

2

まだ試していませんが、最初の推測では、リクエストでクエリパラメータとして渡すことができる7ビットのクリーンな文字列にバイナリ配列をエンコードするBase64を調べることです。

代わりにデータをURLにPOSTすることもできますが、エンコードする方が簡単だと思います。

于 2009-08-14T16:13:05.333 に答える
2

これを処理する最も簡単な方法は、NSData の「説明」メソッドからの戻り値を使用することです。少し遊んで64文字の表現を取得できる文字列を返します。

于 2009-08-16T19:38:38.553 に答える
0

これがあなたが探しているものかどうかわかりません:

deviceTokenString = [[[[[deviceToken description]
                            stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                           stringByReplacingOccurrencesOfString: @">" withString: @""] 
                          stringByReplacingOccurrencesOfString: @" " withString: @""] retain];
于 2012-11-23T03:04:00.667 に答える