QA@IT

objective-cにおけるクライアントからサーバーへのデータ送信について

3868 PV

現在、iphoneアプリを開発しようとしているのですが、appleから取得したdevice tokenをサーバーにpost送信しようとしております。

コードは下記の通りとなりますが、サーバー側(php)にて、$_POST['device']という形でtoken情報を取得したいのですが、取得できていないようです。

原因と解決策について教えて頂けますでしょうか?

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

    // デバイストークンの両端の「<>」を取り除く
    NSString *deviceTokenString = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];

    // デバイストークン中の半角スペースを除去する
    deviceTokenString = [deviceTokenString stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"%@",deviceTokenString);
    [self sendProviderDeviceToken:deviceToken]; // 自分のサーバーに送信する

}


- (void)sendProviderDeviceToken:(NSData *)token

{

    NSMutableData *data = [NSMutableData data];
    [data appendData:[@"device=" dataUsingEncoding:NSUTF8StringEncoding]];
    [data appendData:token];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://domain/token_receive.php"]];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:data];
    [NSURLConnection connectionWithRequest:request delegate:self];

}

回答

NSDataではなくNSStringにしてみても変わりませんか?

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

    // デバイストークンの両端の「<>」を取り除く
    NSString *deviceTokenString = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];

    // デバイストークン中の半角スペースを除去する
    deviceTokenString = [deviceTokenString stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"%@",deviceTokenString);
    [self sendProviderDeviceToken:deviceTokenString]; // 自分のサーバーに送信する

}


- (void)sendProviderDeviceToken:(NSString *)token

{

    NSString* postcontent = [NSString stringWithFormat:@"device=%@", token];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://domain/token_receive.php"]];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:[content dataUsingEncoding:NSUTF8StringEncoding]];
    [NSURLConnection connectionWithRequest:request delegate:self];

}
編集 履歴 (0)

ありがとうございます。できました!

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。