C2DMは送信されたメッセージを受信しません

私は昨日登録したC2DMに関する質問が1つあり、メールとアプリが承認されたというメールが届きました。私はregistration_idを取得するアプリから、私はbroadcast_receiverのように

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();

    android.util.Log.d("REG_1","onReceive");


    if ("com.google.android.c2dm.intent.REGISTRATION".equals(action)) {
        final String registrationId = intent
                .getStringExtra("registration_id");
        String error = intent.getStringExtra("error");

        android.util.Log.d("REG_1",registrationId);

        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(context);
        String token = prefs.getString("token", null);
        String userId;
        try {
            userId = RestClient.getUserIdByToken(token).getString(
                    "user_id");

            Intent i = new Intent(context, RegService.class);
            i.putExtra("c2dm_registration_id",registrationId);
            i.putExtra("token", token);
            i.putExtra("user_id", userId);
            i.putExtra("device_id", "bla");
            i.setAction(android.content.Intent.ACTION_VIEW);
            context.startService(i);
        } catch (JSONException e) {
           //TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
           //TODO Auto-generated catch block
            e.printStackTrace();
        }



        saveRegistrationId(context, registrationId);
    }

登録中にこの機能に入り、コマンドラインからメッセージを送信します。

curl https://www.google.com/accounts/ClientLogin -d [email protected] -d "Passwd=MY_PASSWORD" -d accountType=GOOGLE -d source=Google-cURL-Example -d service=ac2dm

そして

curl --header "Authorization: GoogleLogin auth=DQAAAMMAAAC58D4X-5zjQFdYuGz7D9DhnuN4OUiz_gCtOJRSNwNLN0-wxveAEVL985hNKJXyQ_7U4sTfsUGh_3OXMLKpB5PNN1eaI4AfT19LaJ1vGJCZ_sSE0NDqGsC0mZVdMsYbE2Sz1r1WE_p5WNokfGMRdmxIHl0QCWb43lTD3iCvr51ujmnHnvpn2mDLWr6j9DtyDxADRw1to2iGgpJNelXmIA8tOzjyqF3szN-N2IYnihJ8H2t3G5wotOWy1EahB43Lv2NPdlV-A4yVSbdsYGM_AVdd" "https://android.apis.google.com/c2dm/send" -d registration_id=APA91bHhbsPedDVnYCaSJQMhWjfjK3W9jOaMgVITUHqw97w4fF_8fermSG22CzFvpPuTyRKnJFyJ_iwfgJEJ4uidURxuHZCCBuPtGAsv6NeVipmOd53Fkru_A3NW3cpIMo9gvuVxIB0QqxOvl1SmVfqRzD4qQfSNaw -d "data.test_result=This data will be send to your application as payload" -d collapse_key=2
id=0:1322216144957968%b3c4048a00000032

ブロードキャスターのonHandle機能に入ることはありません。

    
        
            
            
        
        <!-- Receive the registration id -->
        
            
            
        
    

...

    
    
    
    
    
    
    
<!---->
    
    
        
    
    
    

Did anybody have similar strange problems that get registrationId そしてsend messages but do not receive message on phone ? What can be problem, maybe because I registered yesterday ( but how than I get rigistrationId そしてauth for that account) ? Package names そしてgmail are account are 100% ok.

0

2 答え

サービスタグを追加する[C2DMBaseReceiverのサブクラスであるサービスタグの下に受信者名を書き込む]


C2DMRegistrationReceiverの代わりにC2DMBroadcastReceiverを使用する


1
追加された
C2DMRegistrationReceiverはカスタムクラスであり、BroadcastReceiverを拡張します。 C2DMBroadcastReceiverとは何ですか?どのような.jarを含める必要がありますか? C2DMBaseReceiverはどこにありますか?ありがとう!
追加された 著者 Damir,
C2DMBroadcastReceiverもBroadcastReceiverの子クラスです。
追加された 著者 Xorsat,
また、外部の.jarを追加する必要はありません。プロジェクトに3つのopensourceクラスを追加するだけです。そのクラスはここで見つけることができます。 コード.google.com/p/chrometophone/source/browse/trunk/android /&zwnj;&hellip;
追加された 著者 Xorsat,
私はここで最高の例が見つかりました。 vogella.de/articles/AndroidCloudToDeviceMessaging/article.ht‌ ml
追加された 著者 Xorsat,

You can refer following Link for proper implementation of C2DM Google C2DM service

0
追加された