我正在构建网站,允许用户注册并接收基于某些事件的实时通知,我尝试使用 OneSignal 进行网络通知,所以我已经完成了这部分,并且需要帮助收集称为player_id和subscriber_id的用户令牌。
我检查了 OneSignal 文档,但没有找到以下问题的答案。 https://documentation.onesignal.com/docs/web-push-quickstart
因此我们需要以下方面的帮助:
<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
<script>
window.OneSignalDeferred = window.OneSignalDeferred || [];
OneSignalDeferred.push(function(OneSignal) {
OneSignal.init({
appId: "YOUR_APP_KEY",
});
});
</script>
// send notification to user
sendMessage("Title","msg here","playerid");
function sendMessage($title,$message,$player_id,$image="") {
$content = array(
"en" => $message,
);
$headings = array(
'en' => $title
);
$fields = array(
'app_id' => 'Your App ID Here',
'include_player_ids' => array($player_id),
'data' => array( 'foo' => 'bar' ),
'contents' => $content,
'headings' => $headings,
"web_url" => "https://howi.in",
"chrome_web_image" => $image
);
$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' ) );
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 );
}
?>
提前致谢
player_id 是 OneSignal 提供的每个用户/设备的唯一标识符。要检索此 ID,您可以使用 OneSignal SDK 中的
getUserId
方法
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<script>
window.OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.init({
appId: "YOUR_APP_KEY",
});
OneSignal.isPushNotificationsEnabled().then(function(isEnabled) {
if (isEnabled) {
OneSignal.getUserId().then(function(userId) {
console.log("OneSignal User ID:", userId);
});
} else {
console.log("User is not subscribed for notifications");
}
});
});
</script>
发送通知
function sendMessage($title, $message, $player_id, $image = "") {
$content = array("en" => $message);
$headings = array('en' => $title);
$fields = array(
'app_id' => 'Your App ID Here',
'include_player_ids' => array($player_id),
'data' => array('foo' => 'bar'),
'contents' => $content,
'headings' => $headings,
"web_url" => "https://yourwebsite.com",
"chrome_web_image" => $image
);
$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'));
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;
}