ANDROID:使用标签的信号通知

时间:2017-02-27 16:59:09

标签: android onesignal

我正在使用信号创建推送通知,我通过播放器ID发送推送通知,但它有一个限制。

我有一个登录系统,我想为不同的用户发送通知,如果两个或更多用户从同一设备登录,那么我无法区分它们。

现在我有一个表,每当用户登录时,它将playerid添加到该用户,然后通过php我通过userId发送通知,这是在用户表中

我搜索了很多,找不到解决方案

2 个答案:

答案 0 :(得分:1)

您的方法可能是错误的,您需要在用户注销后立即取消注册用户。 当用户注销时,您需要从设备ID表中删除该用户的简单单词。

答案 1 :(得分:0)

您可以向用户添加标签,并基于附加到不同用户的标签发送通知,并通过使用URL https://onesignal.com/api/v1/notifications进行POST来向他们发送通知

只能使用OneSignal仪表板来创建段,但是可以使用SDK / API来创建标签。

添加标题"Content-Type":"application/json""Authorization":"Basic <REST API Key>"

在正文中添加

        {
   "app_id":"<App Id>",
   "headings":{
      "en":"Title Here"
   },
   "contents":{
      "en":"Description Here"
   },
   "filters":[
      {
         "field":"tag",
         "key":"level",
         "relation":"=",
         "value":"10"
      },
      {
         "operator":"OR"
      },
      {
         "field":"amount_spent",
         "relation":">",
         "value":"0"
      }
   ]
}

然后发出JSON对象请求以完成该过程。

您可以参考以下代码以查看如何将标头附加到JSON对象请求以及如何将标签附加到用户。 (此请求已通过使用android volley发出)

  String url = "https://onesignal.com/api/v1/notifications";

                JSONObject jsonBody;
                try {
                    jsonBody = new JSONObject(
                            "{'app_id':'app-id'," +
                            "'headings': {'en': 'title'}, " +
                            "'contents': {'en': 'message'}," +
                                    "'filters':[{'field':'tag','key':'"+id+"','relation':'=','value':'true'}]}"
                    );

                //request a json object response
                JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, jsonBody, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        //now handle the response
                        Toast.makeText(Activity.this,  "Notification successfully sent", Toast.LENGTH_SHORT).show();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        //handle the error
                        Toast.makeText(Activity.this, "An error occurred", Toast.LENGTH_SHORT).show();
                        error.printStackTrace();
                    }
                })
                {    //adding header to the request
                    @Override
                    public Map<String, String> getHeaders() {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("Authorization", "Basic <REST API KEY>");
                        params.put("Content-type", "application/json");
                        return params;
                    }
                };
                // Add the request to the queue
                Volley.newRequestQueue(Activity.this).add(jsonRequest);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

为用户添加标签

 JSONObject tags = new JSONObject();
            try {
                tags.put("key","value");
                //for the above JSON request I have used the following key value pair
                // tags.put(id,true);  
                // where id is a string containing the userId
                //true is a boolean value
            } catch (JSONException e) {
                e.printStackTrace();
            }
            OneSignal.sendTags(tags);

这应该成功完成您的查询。