
前記事:OneSignalでWEBサイトにPush通知を実装するサンプル(SDK編)
前記事にて導入からSDKの事まで書きましたが、続けてAPIを使っての送信処理の事などを書いていきます
One Signal
https://onesignal.com/
コントロールパネルのドキュメント
https://documentation.onesignal.com/docs/dashboard
WEB Push SDKのドキュメント
https://documentation.onesignal.com/docs/web-push-sdk
APIのドキュメント
https://documentation.onesignal.com/reference#create-notification
APIによる送信処理もOne Signalの素晴らしいドキュメントを見た方がはやい
今回はPHPからAPIにアクセス、player_idやtagを指定して特定のユーザーにだけ送信する様にしたいと思います
player_idを指定して送信
push.phpfunction sendMessage(){
$app_id = 'APP_ID';
$title = 'タイトル';
$mess = 'メッセージ';
$link_url = 'リンク先URL';
$icon_url = 'アイコンURL';
$player_ids = array('PLAYER_ID','PLAYER_ID');
$headings = array("en" => $title);
$content = array("en" => $mess);
$fields = array(
'app_id' => $app_id,
'include_player_ids' => $player_ids,
'url' => $link_url,
'chrome_web_icon' => $icon_url,
'headings' => $headings,
'contents' => $content
);
$fields = json_encode($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8',
'Authorization: Basic REST API Key'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendMessage();
$return["allresponses"] = $response;
$return = json_encode( $return);
print("\n\nJSON received:\n");
print($return);
print("\n");
player_idsはjsonで記述、複数指定する事も可能(たぶん1クエリ2000件まで)tagを指定して送信
push.phpfunction sendMessage(){
$app_id = 'APP_ID';
$title = 'タイトル';
$mess = 'メッセージ';
$link_url = 'リンク先URL';
$icon_url = 'アイコンURL';
$player_ids = array('PLAYER_ID','PLAYER_ID');
$headings = array("en" => $title);
$content = array("en" => $mess);
$fields = array(
'app_id' => $app_id,
'filters' => array(array("field" => "tag", "key" => "タグ名", "relation" => "=", "value" => "値")),
'url' => $link_url,
'chrome_web_icon' => $icon_url,
'headings' => $headings,
'contents' => $content
);
$fields = json_encode($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8',
'Authorization: Basic REST API Key'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendMessage();
$return["allresponses"] = $response;
$return = json_encode( $return);
print("\n\nJSON received:\n");
print($return);
print("\n");
OneSignalでのtagを指定は単純なタグ検索ではなくかなり自由度が高いですね
データベース検索で出来るそれに近い、記述式も応じて長いけど便利
'filters' => array(array("field" => "tag", "key" => "タグ名", "relation" => "=", "value" => "値"))
記入する部分は赤字の部分でそれ以外は固定コードrelationは比較演算子、ドキュメントにて使えるとされるのは『 > 』『 < 』『 = 』『 != 』『exists』『not_exists』
『exists』『not_exists』はそのキーや値が存在するかどうかでの判別だと思います
また{xxxxx}, {"operator": "OR"},{xxxxxx}とする事でOR検索での指定も可能
部分一致とかはどうだろう、あれば複数の値をぶっ込めておけるんだけども、、、
関連したOneSignalコードのサンプル
- タグを付与るjavaScriptコード
sendTag()
OneSignal.sendTag("key", "value");
- 複数のタグを付与るjavaScriptコード
sendTag()
OneSignal.sendTags({
key: 'value',
key2: 'value2',
});
- player_idを取得するjavaScriptコード
getUserId()
OneSignal.getUserId(function(userId) {
console.log("OneSignal User ID:", userId);
});
またはOneSignal.getUserId().then(function(userId) {
console.log("OneSignal User ID:", userId);
});
Harrah's Cherokee Casino & Hotel - Jackson County
返信削除HARRAH'S CHEROKEE CASINO & HOTEL This casino hotel in 울산광역 출장마사지 Jackson County 천안 출장샵 offers 2 전라남도 출장샵 indoor pools, a 동두천 출장마사지 Jacuzzi, 사천 출장샵 a sauna and a full-service spa.