3

私はApple通知サービスを使用しているので、この機能では、アプリをダウンロードする各デバイストークンを登録する必要がありますか、つまり、通知を送信する必要があるときに、どのアドレスに送信する必要がありますか.

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{

NSString *str = [NSString stringWithFormat:@"Error: %@",[error localizedDescription]];
NSLog(@"%@",str);}
4

3 に答える 3

3

アーバンエアシップなどのサービスを利用したくない場合。データベース (おそらく MySQL) を作成し、PHP などの言語を使用してファイルを作成し、デバイス トークンを POST してからデータベースに入れることができます。

PHPでは、これは次のようになります

<?php
$connection = mysql_connect("localhost","username","password");
if (!$connection){
  die('Error: ' . mysql_error());
}

mysql_select_db("my_database", $connection);

mysql_query("INSERT INTO tokens (token)
VALUES ('$_POST[token]')");

mysql_close($connection);
?>

iOS 側では、次のコードを使用します。

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *urlString;
    NSURL *url;
    NSMutableURLRequest *request;
    NSString *postString;

    urlString = @"http://yoururl.com/apns/registerDevice";
    url = [NSURL URLWithString:urlString];
    request = [NSMutableURLRequest requestWithURL:url];
    postString = [NSString stringWithFormat:@"token=%@", [[NSString alloc] initWithData:deviceToken encoding:NSUTF8StringEncoding];];
    [request setHTTPMethod:@"POST"];
    [request setValue:[NSString stringWithFormat:@"%d", [postString length]] forHTTPHeaderField:@"Content-length"];
    [request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];

    (void)[[NSURLConnection alloc] initWithRequest:request delegate:self];
    //Casting this to void makes the warning of unused expression go away.
}
于 2012-07-08T16:27:05.577 に答える
2

はい、すべてのデバイス トークンを取得する必要がありますが、シンプルに保ちたい場合は、プッシュ通知に Urban Airship を使用することを強くお勧めします。

于 2012-07-07T22:31:27.217 に答える