OneSignal向段中的所有用户发送通知

时间:2016-11-21 14:11:37

标签: javascript php html onesignal

我希望实现的目标概述:

用户可以登录的网站(具有数据库定义的不同权限),并在订单状态发生变化时通过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");
?>

1 个答案:

答案 0 :(得分:0)

我已经使用OneSignal for Android。 但是,如果您通过对OneSignal的API端点进行API调用向特定细分受众群发送通知,则应尝试向OneSignal的服务器发送包含所需通知数据的试用通知/测试通知。

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

此外,如果已正确设置细分,请检查OneSignal控制台。 正确设置的段可能会有一些带有相应值的标记,以选择接收发送到该段的通知的目标用户组。

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

希望这会有所帮助:)

例如,使用像Mock Server这样的服务来模拟具有所需数据的OneSignal API。