首页 > 解决方案 > 如何通过移动设备首选项设置过滤 OneSignal 推送消息

问题描述

我对 OneSignal 很陌生。根据我的设计,我可以

从 PHP 脚本中,我可以向段发送推送通知(我在下面显示代码)。

语境:

移动用户需要监测田地的芽温。风场业主有2个,业主监控的场地有1个。有 4 部手机:两个按字段

换句话说,mobile_11 监控字段 1 mobile_12 监控字段 1 mobile_21 监控字段 2 mobile_22 监控字段 2

我的 APP 为用户手机提供了选择他想要监控的字段定义阈值温度的可能性。

OneSignal OneSignal 是一个很棒的工具。我创建了三个段

我的APP有两种形式,一种是领域的,一种是门槛的

在此处输入图像描述

('Terrain' 是 id 为 1 的字段,'Alarme' 是阈值)

在我的 Android 中,我检查了字段 1 和阈值 8。在我的 OneSignal 控制台中,我现在可以观察到这一行(来自用户选项卡)

在此处输入图像描述

我不确定我的方法是否是最好的方法,也许我必须适应我的两种形式,但从那时起,我想知道如何修改我的 php 脚本以发送推送通知:

我尝试了以下但不考虑阈值

function sendMessage() {
    $content      = array(
        "en" => 'Une station est en alarme'
    );


    $fields = array(
        'app_id' => "55555555-xxxxx-4100-bb42-xxxxxxxxx", // wrong app_id
        'included_segments' => array(
            'threshold'
        ),
        'data' => array(
            "threshold" => "2"
        ),
        'contents' => $content
    );
    
    $fields = json_encode($fields);
    print("\nJSON sent:\n");
    
    echo '<pre>';
    print($fields);
    echo '</pre>';

    $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 ZTkYYYYYYYMtYTBhMi00ZTY3LYYYYYYYYYYYYYYYYY' // Wrong Authorisation
    ));
    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;
}

在上面的示例中,发送了推送消息,这不应该,因为阈值实际上是 8

你明白我的问题吗?如果没有,请随时向我询问其他信息,这将是最好的方法吗?它必须适用于IOS和Android

非常感谢

标签: androidiospush-notificationonesignal

解决方案


我得到了一些好的结果(见下面的代码),但是当温度低于阈值时,我需要向段 1 和 0 或段 2 和 0 发送消息。

要恢复,我有两场酒(以后我可以有更多的场来监控)

一个用户可以注册到字段 1 他正在注册到分段字段 1 另一个用户可以注册到字段 2 他正在注册到分段字段 2 一个用户可以注册到分段字段 0 以在发生故障时报警温度低于任何字段的阈值。

此代码工作正常,但它永远不会警告注册到段字段 0 的用户

 'filters' => array(
                array(
                    "field"     => "tag", 
                    "key"       => "threshold", 
                    "relation"  => ">", 
                    "value"     => $lowestTemperature),
                array(
                    "operator"  => "AND"),
                array(
                    "field"     => "tag", 
                    "key"       => "field",
                    "relation"  => "=", 
                    "value"     => $fieldID
                    )
            ), 

注意:$fieldID 永远不会得到 0 的值

然后我尝试了以下但没有成功

     'filters' => array(
        array(
            array(
                "field"     => "tag", 
                "key"       => "threshold", 
                "relation"  => ">", 
                "value"     => $lowestTemperature
            ),
            array(
            "operator"  => "AND"
            ),
            array(
                "field"     => "tag", 
                "key"       => "field",
                "relation"  => "=", 
                "value"     => $fieldID
            )

        ),
        array(
            "operator"  => "OR"
        ),
        array(
           array(
                "field"     => "tag", 
                "key"       => "threshold", 
                "relation"  => ">", 
                "value"     => $lowestTemperature
            ),
            array(
            "operator"  => "AND"
            ),
            array(
                "field"     => "tag", 
                "key"       => "field",
                "relation"  => "=", 
                "value"     => 0
            )
        )
    ),

会有任何解决方案有类似的东西

if(($value < $threshold AND $field == $fieldID) OR ($value < $threshold AND $field == 0))
{
  // Send push notification
}

推荐阅读