
プッシュ通知については、メーリングリストがHabréで何度も書かれています。たとえば
hereや
hereですが 、アクションへの直接的なガイドはまだありません。 興味がある場合は、猫の下でお願いします。
デバイストークンを登録する
まず最初に、アプリケーション開発者は登録アドレスを示すマジックを作成しますが、これは次のようになります:htpp://test.ru/secret/android?Token = valueおよびhtpp://test.ru/secret/ios?Token = value 。
最も注目すべきことは、魔法が失敗したか、高品質ではなかったかもしれないが、単に登録された登録に対する保護がないことです。
入力時に、アプリケーションをインストールするときに来るトークンの値を取得します。わずかな遅延がありますが、文字通り10〜20秒です。 トークンは一意ですが、データベースへの書き込み時に一意性を確認することもできます。
Androidのトークンの例:
APA91bFY-3
IOS:
628a3f4a28bb994bb7c9a4143950d240c6d5a1dab8621e9ed61a2109a074f832
このステップでは、デバイスの登録が完了しました。
通知メール
Appleは
APNSサービスとGoogle
GCMを使用しています(C2DMは廃止されていると考えてください、これを覚えておいてください)、ドキュメントを読んだ後、お気に入りのビジネス、つまり自転車の建物に移ることができますが、予算は限られており、既製のソリューションを探し始めました。 適合した最も適切なものは
ApnsPHPと
GCMMessageで 、5.3 +と5.4+の両方で動作します。
ライブラリを使用する場合、最も重要なことは、APNSの場合は正しい証明書とシークレットフレーズを取得し、GCMを操作するためのシークレットトークンを取得することです。
GCMの通知を送信するための既製のコードの例、トークンはバッチで送信することをお勧めします。大量でもすぐに動作します。サービスは無効なトークンを返します(ユーザーはアプリケーションを削除しました)。すぐに削除する必要があります。
function fnSendAndroid($tokens, $text, $config) { $sender = new CodeMonkeysRu\GCM\Sender($config['androidTokenAuth']); $message = new CodeMonkeysRu\GCM\Message($tokens, array("message" => $text)); try { $response = $sender->send($message); if ($response->getFailureCount() > 0) { $invalidRegistrationIds = $response->getInvalidRegistrationIds(); foreach($invalidRegistrationIds as $invalidRegistrationId) {
APNSが非常に使いやすいと書いているところはどこでも、原則としてこれは真実です。テストと本番用の証明書があることを考慮すると、証明書、秘密のフレーズ、ルート証明書の必要性に注意を払う必要があります。これらはすべて開発者のアカウントで取得されます
ユーザーは特に迷惑なアプリケーションを削除できるため、送信する前に無効なトークンを削除する必要があります。
function feedback($config) { $feedback = new ApnsPHP_Feedback( ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION, $config['apn']['sert'] ); $feedback->setProviderCertificatePassphrase($config['apn']['passphrase']); $feedback->setRootCertificationAuthority($config['apn']['RootCertificat']); $feedback->connect(); $aDeviceTokens = $feedback->receive(); if (!empty($aDeviceTokens)) { foreach ($aDeviceTokens as $DeviceToken) {
次に、送信自体:
function fnSendIos($tokens, $text, $config) { $push = new ApnsPHP_Push( ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION, $config['apn']['sert']);
証明書と混同していない場合、配布は成功します。
これが判明したマンションです。