【问题标题】:OneSignal sending notification to all users in segmentOneSignal 向分段中的所有用户发送通知
【发布时间】:2016-11-21 14:11:37
【问题描述】:

概述我想要实现的目标:

用户可以登录的网站(具有由数据库定义的不同权限)并在订单状态更改时通过 OneSignal 发送通知。

目前我已经完成了登录系统,并且用户被放置到 OneSignal 上的正确部分(例如供应商)。我要做的是在订单状态更新时触发所有“供应商”的通知。

有什么想法可以解决这个问题吗?我已经多次查看所有文档,所以请不要只是说要这样做。

感谢您的建议。

<?php
function sendMessage(){
    $content = array(
        "en" => 'Test Message'
    );

    $fields = array(
        'app_id' => "1a95c98a-9349-4876-b9ce-981893b7bf42",
        'included_segments' => array('Suppliers'),
        'data' => array("userType" => "suppliers"),
        'contents' => $content
    );

    $fields = json_encode($fields);
    print("\nJSON sent:\n");
    print($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 NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj'));
    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");
?>

【问题讨论】:

  • 尝试解决它,然后就您所尝试的具体问题与 SO 联系。您想要的可能有很多解决方案,但没有人会为您编写代码。
  • 我没有要求任何人为我编写代码,因此我的问题底部有感谢建议行。我正在添加我在看到此评论时尝试过的代码。我真的在寻求理想情况下使用 OneSignal 进行网络推送通知的人的建议。

标签: javascript php html onesignal


【解决方案1】:

我使用过适用于 Android 的 OneSignal。 但是,如果您通过对 OneSignal 的 API 端点进行 API 调用来向特定细分市场发送通知,那么您应该尝试将带有所需通知数据的试用通知/测试通知发送到 OneSignal 的服务器。

之后,通过您的代码向 API 构造相同的 HTTP 请求。 例如,在 Firefox/Chrome 上使用 RESTful 调试器并测试您是否确实向 OneSignal 发送了正确的请求以转发您的通知。

此外,请检查 OneSignal 控制台是否已正确设置分段。 正确设置的细分可能会有一些标签与它们相关联的相应值,以选择接收发送到该细分的通知的目标用户组。

最后,如果似乎没有其他解决方案可行,请再次按照 OneSignal 文档中的所有步骤检查整个分段设置是否正确。

希望这会有所帮助:)

例如,使用类似Mock Server 的服务来模拟 OneSignal API 和所需的数据。

【讨论】:

  • 我也使用过适用于 iOS 和 Android 的 OneSignal,但我在网络推送通知方面没有运气。这很奇怪,因为我的 Ajax 请求返回它是成功的,但是一旦发生这种情况,OneSignal 就不会发送任何消息。发送通知当前是通过 HTML btw 中的按钮单击触发的。我使用的示例代码(有一些小的改动)位于:documentation.onesignal.com/reference(发送到特定段)
  • 恐怕我能想到的唯一问题是在向服务器发出请求时没有正确设置标签。还有一点建议,您用来验证对服务器的推送请求的所有代码都不应该在客户端,因为它包含 OneSignal 用来将请求映射到特定 OneSignal 项目的服务器验证密钥。因此,请尝试向您的服务器发送一个请求,其中包含要推送给该段中所有用户的所需数据,并进一步从您的应用服务器向 OneSignal 发送推送请求。
  • 尽管如此,一旦我有时间,我仍然会尝试解决您的问题,也许会为您提供解决方案。
  • 感谢您的建议。我会考虑移动代码,让它一切正常(不想添加另一个潜在的原因,让它暂时无法工作)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多