私が何をするか、そして私が何をしたか。
ID をデータベースに保存している場合、2 つの ID を簡単に区別できます。それらを同じテーブルに保持しているがフィールドが異なる場合は、列に別の名前を使用してください。デバイスの種類に応じて ID を保存します。プッシュ通知 ID の一般的な列が 2 つ使用されていないだけです。タイプ別のデバイス ID とユーザーのメンバー ID を保存します。そのため、複数のデバイスに登録しても、すべてのデバイス android または ios に送信されます。または、すべてを選択して、すべての登録ユーザーに送信することもできます。
下記は用例です。複数の id 列を使用する 1 つの例と、タイプに別の列を持つ単一の id 列を使用する例。
gcm_id
apn_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 で保存します。これがいくつかの助けになり、それらの並べ替えを開始できることを願っています.