2012-05-09 194 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也是很好的。