как отправить уведомление в зависимости от местоположения пользователя oneSignal - PullRequest
1 голос
/ 26 апреля 2020

Итак, у меня есть эта функция, и я хочу, чтобы она отправляла уведомления в зависимости от местоположения пользователя с помощью API-интерфейса REST OneSignal, я впервые работаю с уведомлениями и одним сигналом, поэтому я проверяю https://documentation.onesignal.com/docs Я трачу последние 7 попыток :(, я обнаружил, что могу сортировать свою аудиторию, используя фильтры, к счастью, я не понял, как ее использовать, извините, если мой Engli sh недостаточно ясен, заранее спасибо my_function

public function sendNotification(){
   $content = array(
        "en" => 'Test Message'
        );

    $fields = array(
        'app_id' => "My_app_id",
        'filters' => array(array("field" => "location", "key" => "radius", "relation" => "=", "value" => "50"),array("operator" => "or"),array("field" => "location", "key" => "lat", "relation" => "=", "value" => "3.1946047"),array("operator" => "or"),array("field" => "location","key"=>"long", "relation" => "=", "value" => "30.2402744")),
        'data' => array("foo" => "bar"),
        '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 NmZhZDk4MDMtZTJlZ'));
    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["allresponses"] = $response;
    return $return = json_encode( $return);


}

1 Ответ

0 голосов
/ 26 апреля 2020

Ваш код не отформатирован, как требуется в do c: https://documentation.onesignal.com/reference#send для пользователей на основе фильтров

Это исправленное 'filters' отфильтрует все пользователи в радиусе определенного местоположения:

        $fields = array(
            'app_id' => "My_app_id",
            'filters' => [
                [
                    "field" => "location", 
                    "radius" => "50", 
                    "lat" => "3.1946047", 
                    "long" => "30.2402744"
                ]
            ],
            'data' => array("foo" => "bar"),
            'contents' => $content
        );
...