0

私は、Android と iPhone 用に開発されているアプリケーションの Web サービスに取り組んでいます。

プッシュ通知を送信しなければならないところで行き詰まっています。ユーザーがログインするデバイスに応じて、デバイス トークン (IOS) または gcm 登録 ID (Android) を保存しています。

GCMとAPNSのプッシュ通知の手順が異なるため、プッシュ通知時に2つをどのように区別するかが問題です。これらの通知はcronジョブを使用して送信されるため、私の場合は機能しないため、ユーザーエージェントについては教えないでください。

デバイスの種類をデータベースに保存する必要がありますか、それとも他の方法がありますか? ..?

私の質問が明確であることを願っています。

ありがとう

4

1 に答える 1

0

私が何をするか、そして私が何をしたか。

ID をデータベースに保存している場合、2 つの ID を簡単に区別できます。それらを同じテーブルに保持しているがフィールドが異なる場合は、列に別の名前を使用してください。デバイスの種類に応じて ID を保存します。プッシュ通知 ID の一般的な列が 2 つ使用されていないだけです。タイプ別のデバイス ID とユーザーのメンバー ID を保存します。そのため、複数のデバイスに登録しても、すべてのデバイス android または ios に送信されます。または、すべてを選択して、すべての登録ユーザーに送信することもできます。

下記は用例です。複数の id 列を使用する 1 つの例と、タイプに別の列を持つ単一の id 列を使用する例。

gcm_idapn_idキーが保存されているDBの列名として、Android用とiOS用があります。

次に、通知を送信する準備ができたら、必要な基準に基づいて選択クエリを実行できます。

例: 多数のユーザー グループに送信するには、次のようにします。完全なコードではない単純な例。

 $result = "SELECT * FROM notification_table" 

次に、いくつかの PHP を使用して配列を反復処理し、通知を送信します。

foreach($result as $key=>$id){

  if($key == "gcm_id"){
   //do android push here using the $id or run a function passing $id to it
  }elseif($key == "apn_id"){
   //do apple push here using the $id or run a function passing $id to it
  }    

 }

または、デバイス タイプを保存して 1 つの ID フィールドを使用するという別のオプションもあります。したがって、テーブルには次のようなものがあるかもしれません

push_id | dev_type | member_id

データベースに保存するときは、必ずデバイス タイプを指定してください。それはあなたが望む方法である可能性があります。dev_typeさまざまなテキスト/文字、または整数フィールドである可能性があり、タイプごとに数値 ID を指定します。しかし、あなたはそれに追いつきたいです。android / iosコードよりも覚えやすいように、さまざまな文字を使用して値として使用する場合があります。

次に、デバイス タイプによるフィルター以外は同じことを行います。

$result = "SELECT * FROM notification_table" 

次に、いくつかの PHP を使用して配列を反復処理し、通知を送信します。

foreach($result as $res){

  if($res["dev_type"] == "android"){
   //do android push here using the $res["push_id"] or pass it to a function
  }elseif($res["dev_type"] == "ios"){
   //do apple push here using the $res["push_id"] or pass it to a function
  }    

 }

または、たとえば新しいプライベートメッセージのために特定のユーザーに制限します。完全ではないサンプルコード

$result = "SELECT * FROM notification_table WHERE mem_id='12345'";

次に、関数を呼び出すか、それを処理したい方法で呼び出します。

個人的には、GCM 用と APN 用の 2 つの関数を作成します。次に、タイプに応じて foreach ループを通過するときに関数を呼び出します。ID と送信するメッセージを渡すサンプル関数。

function push_gcm($id,$message){

//do stuff

}

function push_apn($id,$message){

//do stuff

}

個人的には、ID の長さなどに依存してタイプを判断することはありません。上記の例の 1 つと同様に、タイプを ID で保存します。これがいくつかの助けになり、それらの並べ替えを開始できることを願っています.

于 2013-06-26T09:33:48.050 に答える