2

APNS を iPhone アプリに統合しています。Apple から提供された Apple Push Notification ドキュメントについて説明しました。サーバー側に疑問があります。以下の私の疑問を見つけてください、

  1. Apple said to create a server from below steps,

    Installing the SSL Certificate and Key on the Server:
    You should install the SSL distribution certificate and private cryptographic key you obtained earlier on the server computer on which the provider code runs and from which it connects with the sandbox or production versions of APNs. To do so, complete the following steps:
    1.1.Open Keychain Access utility and click the My Certificates category in the left pane.
    1.2.Find the certificate you want to install and disclose its contents.
    You'll see both a certificate and a private key.
    1.3.Select both the certificate and key, choose File > Export Items, and export them as a Personal Information Exchange (.p12) file.
    1.4.Servers implemented in languages such as Ruby and Perl often are better able to deal with certificates in the Personal Information Exchange format. To convert the certificate to this format, complete the following steps:
         a.In KeyChain Access, select the certificate and choose File > Export Items. Select the Personal Information Exchange (.p12) option, select a save location, and click Save.
         b.Launch the Terminal application and enter the following command after the prompt: openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
    1.5.Copy the .pem certificate to the new computer and install it in the appropriate place.

Am clear to create a server (i assume it will be .php server). Am doubt is how we storing all user's DeviceTokens in the server?

2. How to send push notifications to all registered devicetokens?
3. How to send push notifications to a specific user?

私の質問について何か提案をいただけますか?このリンクからサンプルの .php ファイルを取得しましたhttp://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12。私を助けてください。前もって感謝します。

4

2 に答える 2

4

次のコードを使用して、サーバー側で取得できます。

-(void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);


    NSData *postData = [[NSString stringWithFormat:@"token=%@", deviceToken] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"YOURDOMAIN/FILE.php"]]];

    [request setHTTPMethod:@"POST"];

    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];

    [request setHTTPBody:postData];

    NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
}

トークンを DB に保存するだけです ($_POST['token'])

通知を送信するには、次のようなループを実行する必要があります。

//getTokens from database
$deviceToken = getDeviceTokens();

foreach($arr AS $key => $val)
    {
        // Create the payload body
        $body['aps'] = array(
                'alert' => 'Puuuuush',
                'sound' => 'vuvzela.wav',
                'badge' => ($badge != (null) ? $badge + 1 : 1)
                );

// Encode the payload as JSON
        $payload = json_encode($body);

        // Build the binary notification
        $msg = chr(0) . pack('n', 32) . pack('H*', $val) . pack('n', strlen($payload)) . $payload;

        // Send it to the server
        $result = fwrite($fp, $msg, strlen($msg));

        if (!$result)
                echo 'Message not delivered' . PHP_EOL;
        else
                echo 'Message successfully delivered' . PHP_EOL;

        $count++;
    }
于 2012-04-25T07:11:52.123 に答える
1

すべてのデバイス トークンをサーバーに保存する必要があります。このためのデータベースをセットアップする必要があります。プッシュ通知を送信するには、メッセージとデバイス トークンの情報をサーバーから APNS に送信します。

特定のユーザーにプッシュ通知を送信する場合、アプリはユーザー情報をデバイス トークンと共にサーバーに送信する必要があります。また、ユーザー情報とデバイス トークンをデータベースに保持する必要があります。特定のユーザーに通知を送信する必要がある場合は、そのユーザーのデバイス トークンを取得し、メッセージを作成して APNS に送信します。

参照した 2 部構成のチュートリアルには、これらすべての詳細が含まれています。php でダウンロード可能なスクリプトがあり、試してみることができます。

于 2012-04-24T15:09:53.353 に答える