0

すべての環境ですべての通知を受け取るという問題があります。現在、すべてのビルドのパッケージ名は同じです。そのため、デバイスに同時にインストールできるビルドは 1 つだけです。しかし、すべてのビルドを対象とする通知を受け取ります (正しいビルドまたは他のビルドのいずれかである可能性があります)。

登録IDを調べましたが、常に同じです。問題は、おそらくすべてのアプリが同じパッケージ名を共有していることですか?

登録に表示されるパラメーターは次のとおりです。

  1. マニフェストのブロードキャスト レシーバー:

    <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="com.company.product" />
        </intent-filter>
        <intent-filter>
          <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
          <category android:name="com.company.product" />
      </intent-filter>
    </receiver>
    
  2. 権限:

    <permission android:name="com.company.product.permission.C2D_MESSAGE"
    android:protectionLevel="signature"/> <uses-permission android:name="com.company.product.permission.C2D_MESSAGE"/>

  3. 登録方法:

    Intent registrationIntent = new Intent(REQUEST_REGISTRATION_INTENT);
    registrationIntent.setPackage(GSF_PACKAGE);
    registrationIntent.putExtra(EXTRA_APPLICATION_PENDING_INTENT,
            PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(), 0));
    registrationIntent.putExtra(EXTRA_SENDER, "app@company.com");
    context.startService(registrationIntent);
    

実行中のアプリ (環境) を対象とした通知のみを受け取るには、正確に何を変更する必要がありますか?

さらに、問題がパッケージ名である場合、その理由が正確にはわかりません。デバッグバージョンでログインしたとしましょう。パッケージ名 x で登録します。ここで、パッケージ名 x を使用してプロダクションに登録します。同じパッケージ名で以前に登録されているため、デバッグからの通知を受け取りますか? これは、デバッグ バージョンを使用または登録したことがない場合、本番アプリを使用してデバッグ環境から通知を受け取ることはないということですか?

4

1 に答える 1

1

現在、DEBUG環境用にパッケージの名前を変更したばかりなので、他のアプリを持っているようで、かなり面倒ですが...別の解決策があるかどうかはわかりませんが、見つけていただければ幸いです:)

編集: サード サーバー パーティから解決できる可能性があります。つまり、登録時に、debug/staging/prod という値を持つ変数をサーバーに送信すると、デバイス ID が 3 つのデータベースのいずれかに配置されます (1 つはデバッグ用に登録されたアプリ、もう 1 つはステージング用、もう 1 つは製品用)。これについてどう思うか教えてください!

于 2012-09-10T08:42:08.970 に答える