2012-05-09 151 views
1

我目前使用stackmob进行android和iOS的推送通知。 我正在使用他们的Java客户端发送推送通知。StackMob Java客户端

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

公共类TestSample {

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(); 
} 

}

回答

1

几点意见:

  • 什么是应该的代码做的是什么呢?首先,您使用假设备令牌"Token"注册用户"rathi"。然后你发送一个推送到令牌registrationID,似乎没有在任何地方定义。你是否期待推送通知出现在你的Java客户端中?整个推送通知概念绑定到电话

  • 如果registrationID引用先前在电话上注册的令牌,则您使用该令牌进行的呼叫应该可以工作。通常我希望像你这样的客户拨打​​和broadcastPushNotification(),而不是直接处理令牌。 StackMob API旨在抽象出实现细节

  • 如果您仍然遇到问题,可以发布您获得的控制台输出吗?我看到你已经登录了。更新到最新的SDK也是很好的。