如何获取 OneSignal 网络通知的 user_id

问题描述 投票:0回答:1

我正在构建网站,允许用户注册并接收基于某些事件的实时通知,我尝试使用 OneSignal 进行网络通知,所以我已经完成了这部分,并且需要帮助收集称为player_id和subscriber_id的用户令牌。

我检查了 OneSignal 文档,但没有找到以下问题的答案。 https://documentation.onesignal.com/docs/web-push-quickstart

因此我们需要以下方面的帮助:

  1. 获取用户唯一ID的正确且有效的方法是什么?
<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>
  1. 如何使用 PHP(无 Composer)向用户发送通知?

// 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 );
}

?>

提前致谢

javascript php push-notification onesignal
1个回答
0
投票

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; 
}
© www.soinside.com 2019 - 2024. All rights reserved.