StackMob Java Client



我目前正在使用stackmob为Android和iOS推送通知。我正在使用他们的 java 客户端发送推送通知。

我给出了正确的API_KEY和API_SECRET。deviceToken 也是正确的,但它有时会给我一个 401 错误,有时是一个 200 状态代码,但我无法收到任何推送通知。这是我的示例代码。

公共类测试样本 {

public static String API_KEY = "Some key";
public static String API_SECRET = "Some key";
public static String USER_OBJECT_NAME = "user";
public static int API_VERSION = 0;
public static void main(String[] args) {
       new TestSample();
}
public TestSample()
{       
    String deviceToken="Token";
    init();
    StackMob stackmob=getStackMobInstance();
    stackmob.registerForPushWithUser("rathi", deviceToken, new StackMobRawCallback() {
        @Override
        public void done(HttpVerb arg0, String arg1,
                List<Entry<String, String>> arg2, String arg3, Integer arg4,
                List<Entry<String, String>> arg5, byte[] arg6) {
             System.out.println("HEree1");
        }
    });

    StackMobPushToken x=new StackMobPushToken(registrationID, TokenType.iOS);
    final Map<String, String> payload = new HashMap<String, String>();
    ArrayList<StackMobPushToken>tokens=new ArrayList<StackMobPushToken>(); 
    tokens.add(x);
      payload.put("badge", "1");
      payload.put("sound", "customsound.wav");
      payload.put("alert", "Hello from Stackmob!");
      payload.put("other", "stuff");
    stackmob.pushToTokens(payload, tokens, new StackMobRawCallback() {
        @Override
        public void done(HttpVerb arg0, String arg1,
                List<Entry<String, String>> arg2, String arg3, Integer arg4,
                List<Entry<String, String>> arg5, byte[] arg6) {
             System.out.println("HEree");
        }
    });
}

public  void init() {
    StackMob.setStackMob(new StackMob(API_KEY, API_SECRET, USER_OBJECT_NAME, API_VERSION));
    //StackMob.getStackMob().setSession(new StackMobAndroidSession(c, StackMob.getStackMob().getSession()));
    StackMob.getStackMob().setSession(new StackMobSession(StackMob.getStackMob().getSession()));
    StackMob.setUserAgentName("iOS");
    StackMob.setLogger(new StackMobLogger());
    StackMob.getLogger().setLogging(true);
    StackMobRequest.setCookieStore(new StackMobCookieStore());
}
public static StackMob getStackMobInstance() {
    return StackMob.getStackMob();
}

}

几点评论:

  • 这段代码到底应该做什么?首先,使用虚假的设备令牌"Token"注册用户"rathi"。然后,您将推送发送到似乎未在任何地方定义的令牌registrationID。您是否希望推送通知显示在您的 Java 客户端中?整个推送通知概念与手机息息相关

  • 如果registrationID指的是以前在手机上注册的令牌,那么您使用它拨打的电话应该可以正常工作。通常,我希望像您这样的客户端调用pushToUsers()broadcastPushNotification(),而不是直接处理令牌。StackMob API旨在抽象出这些实现细节。

  • 如果仍然遇到问题,是否可以发布获得的控制台输出?我看到您已经打开了日志记录。更新到最新的 sdk 也总是好的。

最新更新