0

わかりました、私は約3週間これを理解しようとしてきましたが、再び頭を剃る必要はないと思います!!! できる限りコードを分解したので、デバイス トークンをデータベースに取得することだけに集中できます。コードを実行すると、データベースにタイム スタンプ レコードが取得されます。それで、接続されていることがわかりますが、何もありません。

これが私のコードです

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

NSString *tokenStr = [deviceToken description];
NSString *pushToken = [[[[tokenStr 
                          stringByReplacingOccurrencesOfString:@"<" withString:@""] 
                         stringByReplacingOccurrencesOfString:@">" withString:@""] 
                        stringByReplacingOccurrencesOfString:@" " withString:@""] retain];
// Save the token to server

NSString *urlStr = [NSString stringWithFormat:ServerApiURL];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

[req setHTTPMethod:@"POST"];
[req setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];

NSMutableData *postBody = [NSMutableData data];

[postBody appendData:[[NSString stringWithFormat:@"&token=%@", 
                       pushToken] dataUsingEncoding:NSUTF8StringEncoding]];

[req setHTTPBody:postBody];
[[NSURLConnection alloc] initWithRequest:req delegate:nil];
NSLog(@"%@", pushToken);
NSLog(@"%@", url);

}

これは非常に単純なPHPです

// initialize connection to database
$db = mysql_connect('localhost', 'xxxxxxxxx', 'xxxxxxxx');
$db_name = "xxxxxxxxxxxx";
mysql_select_db($db_name, $db);

// store incoming data as php variables
error_log(print_r($_POST, true));
$token = $_POST['token'];


// create mysql query

mysql_query("INSERT INTO iPhone (device_token)
VALUES ('$token')");
mysql_query($query);

mysql_close($db);
?>

データベースで取得しているのはタイムスタンプですが、device_token の下には何もありません。すべての助けをいただければ幸いです。ありがとう。

4

1 に答える 1

0

NSLog(@"%@", pushToken);送信する有効なトークンはありますか?

また、PHP ページで $_POST をダンプして、受信内容を確認することもできます。

mysqlrealescapestring();別の注意点として、古い mysql 関数の使用は現在推奨されていないため、PHP ページの入力をデータベースに挿入する前にサニタイズするか、PDO の使用を検討してください。また、PDO は入力を自動的にサニタイズします。

PDO の詳細は次のとおりです。

http://us2.php.net/manual/en/ref.pdo-mysql.php

http://us2.php.net/manual/en/pdo.query.php

編集:

これが問題の原因である可能性があります。交換

NSMutableData *postBody = [NSMutableData data]; [postBody appendData:[[NSString stringWithFormat:@"&token=%@", pushToken] dataUsingEncoding:NSUTF8StringEncoding]];

NSData *postBody = [[NSString stringWithFormat:@"&token=%@", pushToken] dataUsingEncoding:NSUTF8StringEncoding];

唯一の違いは、NSMutableData ではなく NSData であり、より直接的な設定方法です。これが問題の原因かどうかはわかりませんが、試してみても問題ありません。

于 2012-07-13T08:49:17.623 に答える