2012-05-09 6 views
1

私は現在、アンドロイドとiOSのプッシュ通知にstackmobを使用しています。 プッシュ通知を送信するためにJavaクライアントを使用しています。StackMob 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(); 
} 

}

答えて

1

いくつかのコメント:

  • は、このコードは正確に何をするはずですか?まず、ユーザ"rathi"を偽のデバイストークン"Token"に登録します。次に、どこにも定義されていないようなトークンregistrationIDにプッシュを送信します。プッシュ通知があなたのJavaクライアントに表示されることを期待していますか?プッシュ通知の概念全体が電話機に結び付けられています

  • registrationIDが以前に電話機に登録されたトークンを参照する場合、その電話機で働く必要があります。通常、私はあなたのようなクライアントがトークンを直接扱うのではなく​​とbroadcastPushNotification()と呼ぶと期待しています。 StackMob APIはそれらの実装の詳細を抽象化するためのものです

  • まだ問題が解決しない場合は、コンソール出力を投稿できますか?あなたはすでにログオンしているのを見ています。最新のsdkへのアップデートも常に良いです。