为什么我收到“所有包括的玩家都没有订阅”的消息?

13

我正在尝试使用OneSignal设置基于位置的推送通知,但是我没有收到通知。我收到了错误消息All included players are not subscribed。我不知道问题出在哪里,请问有什么想法吗?

在OneSignal的“所有用户”列表中,未接收到通知的用户设置了预期的纬度和经度坐标的“位置点”,并已订阅。我可以发送没有位置信息的通知,因此发送和接收通知的过程有效。

我已将此行添加到我的AndroidManifest.xml文件中:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

我在我的.run函数中也有这行代码:

 window.plugins.OneSignal.promptLocation();

我用PHP向OneSignal发送请求的代码:

$content = $_GET['content'];
$lat = $_GET['lat'];
$long = $_GET['long'];
$radius = $_GET['radius'];

$response = sendMessage($content, $lat, $long, $radius);

    function sendMessage($message, $lat, $long, $radius){
    $content = array(
        "en" => $message
        );

    $fields = array(
        'app_id' => "aaaaaa-eeee-yyyyy-xxxx-zzzz",
        'filters' => array(array("field" => "location", "radius" => $radius, "lat" => $lat, "long" => $long)),
        //'filters' => array(array("field" => "location", "radius" => "1000", "lat" => "55.819329", "long" => "-4.1696119")),
        'included_segments' => array('All'),
        'data' => array("foo" => "bar"),
        '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 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'));
    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;
 }

请求:

{content: "test", lat: "55.8653169", long: "-4.1696119", radius: "1000"}

响应:

{allresponses: "{"id":"","recipients":0,"errors":["All included players are not subscribed"]}"}
4个回答

20

"所有包含的玩家都没有订阅" 的信息可能意味着以下任意一种情况:

  1. 请确保您已设置正确的 app_id
  2. 您没有订阅的用户。
  3. 您还没有在 OneSignal 仪表盘的 "应用设置" 页面上设置设备的平台。
  4. 筛选器中没有用户。

在您的情况下,位置可能超过1,000米。请尝试增加半径,并确认您是否在OneSignal仪表板的“所有用户”页面上看到了“位置点”。


3
我曾经遇到过同样的问题,后来发现是因为我没有将平台设置为true。我使用的是Ruby SDK,所以我需要确保将以下内容设置为true。
notifcation.is_ios = true notification.is_android = true

0
我们的几个应用程序出现了相同的问题,这很奇怪,因为第一个应用程序是正常的。后来发现,在渴望看到事情起作用的情况下,我们忘记将 OneSignal SDK 文件上传到网站的根目录中。请确保以下文件已上传到您的网站根目录:
  • OneSignalSDKUpdaterWorker.js
  • manifest.json
  • OneSignalSDKWorker.js

您可以从这里下载SDK。


-1
我的问题在后端API更新API头后得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接