我正在使用信号创建推送通知,我通过播放器ID发送推送通知,但它有一个限制。
我有一个登录系统,我想为不同的用户发送通知,如果两个或更多用户从同一设备登录,那么我无法区分它们。
现在我有一个表,每当用户登录时,它将playerid添加到该用户,然后通过php我通过userId发送通知,这是在用户表中
我搜索了很多,找不到解决方案
答案 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);
这应该成功完成您的查询。