2

場合はこれです:デバイストークンが変更された場合、複数のデバイス(1人のユーザーに属する)にプッシュ通知を送信する方法

  1. 自分のiPhone A
  2. 、データベース内の自分のiPhone B

、上の同じアプリにユーザがログイン時にアプリにログインします1人のユーザーに対して2つのトークンがあり、それは正しいです。

+---------+-------------------+ 
| user_id | device_token | 
+---------+-------------------+ 
|  1 | 1st_device_token1 | 
|  1 | 2nd_device_token1 | 
+---------+-------------------+ 

言うが、そのユーザが(両方のデバイス上で)それを再度インストールし、アプリケーションを削除したことを意味し、のAPNのトークンは、従って、私達のデータベースでは、変更され、4つのユニークなトークンがあります。

+---------+-----------------------+ 
| user_id |  device_token  | 
+---------+-----------------------+ 
|  1 | 1st_device_token1  | 
|  1 | 2nd_device_token1  | 
|  1 | 1st_device_token1_new | 
|  1 | 2nd_device_token1_new | 
+---------+-----------------------+ 

ここで、そのユーザーのプッシュ通知は、4つのデバイス(4つのトークン)に送信されます。 アプリを削除してインストールしている場合(起こっている可能性があります:)、データベース内に1人のユーザーに大量のトークンがあり、そのような膨大な数のデバイスがあると思いますが、実際には無効なトークンがたくさんあります。

これを防止する方法は?

+0

プッシュサーバーからのフィードバック情報は歴史的に非常に良いことはありませんが、現在はかなり改善されていると思います。プッシュトークンが無効であるかどうか、またはプッシュを配信できない場合の情報が含まれるかどうかを確認するために、プッシュを送信するときにサーバーが返す情報に関する最新のドキュメントを確認しましたか?しかし、とにかく、これはむしろエッジケースではありません。可能であれば、実際に何度もアプリを削除して再インストールする人は、データベースの膨大な数のエントリにつながるでしょうか? – Gruntcakes

答えて

0

Pushwooshは無効化されたトークン(1日に1回程度)からデータベースを定期的に消去するので、膨大な数のエントリが問題になることはありません。 1人のユーザーの複数のデバイスにプッシュを送信する場合、この場合には特定のPush by UserID機能があります。

アイデアは、ログインイベントに特定のユーザーIDを設定して、次の方法でログアウト時のデフォルト値にリセットすることです:

[[PushNotificationManager pushManager] setUserId:@“external_user_1”] 

ユーザーIDが設定されたら、あなたは/ createMessageのAPIを送信することができます「ユーザー」パラメータを指定して要求:

{ 
    "request": { 
    "application": "APPLICATION_CODE", 
    "auth": "API_ACCESS_TOKEN", 
    "notifications": [{ 
     "send_date": "now", 
     "content": "Hello world!", 
     "users":["external_user_1"] 
    }] 
    } 
} 

この機能は、すべての支払いプランでアクセス可能ですので、それはあなたのためにアクセスする必要があります。

関連する問題