我的Android APP用C#编写,它使用Azure推送通知服务通过Firebase(FCM)将推送通知发送到Android,通过Apple Push服务将iOS发送到iOS。推送通知注册发生在安装应用程序时(该应用程序还删除了所有先前的注册)。
iOS上的推送通知运行正常。
在Android上,有时会收到重复的通知:
,根据我的数据库记录,我确定该应用程序仅发送1条通知。 我怀疑注册过程导致了FCM中的重复令牌。但是后来我发现重复发生了意外,设备上没有任何新的卸载/安装。
请问有什么主意吗?这花了我很多时间。
答案 0 :(得分:0)
我也遇到过同样的问题。要解决此问题,请在注册到通知中心之前,先取消注册属于该设备的先前标签,
//Test class
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test {
public void test() {
try {
Connection con = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", "neo4j", "neo4j");
String query = "MATCH (n) return id(n)";
PreparedStatement ps = con.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println("RESULT: " + rs.getObject("id(n)"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//Servlet
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/testingservlet")
public class testingservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public testingservlet() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
new Test().test();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
然后您再次在通知中心注册。