2016-09-01 4 views
15

私はAndroidのアプリケーションバージョンであるトピックに登録しています。FCMメッセージの送信中に条件が否定される

FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION); 

は、今、私が更新を起動するたびに、私は、古いバージョンに退会と私は更新通知を送信する場合にのみ、古いユーザーはそれを取得するように、新しいバージョンに加入しなければなりません。代わりに、バージョンを無効にするだけで大​​丈夫です。

"condition": "!'2.1.1' in topics", 

FCMにはこのようなものがありますか?

答えて

4

あなたは彼らだけがない加入しているかどうか、彼らが話題に加入しているかどうかに基づいてユーザーをターゲットにすることができます。

ワイルドカードマッチングはFirebase Notifications(公開APIはまだ存在しません)でのみ利用可能で、コンソールは通知メッセージ(アプリケーションがフォアグラウンドにない場合は実際にシステムによって処理される)を送信するだけです。あなたの選択肢は回避策に限定されます。

私は考えることができるいくつか:

  1. は、各ユーザー/デバイスIDは、構造のようなMap<Token, Version>にインストールされているアプリのバージョンを追跡します。そのためにFirebaseデータベースを使用することができます。

  2. すべての古いバージョンを列挙し、それらを通知します。

  3. 新しいリリースのアナウンスを含むデータメッセージを(Cloud Messaging APIを介して)全員に送信し、メッセージが最新のバージョンであればonMessageReceived()に表示しないようにします。

hmm ...後で#3はかなりきれいな解決策のようです。あなたは送っていますが、システムがそれを処理することができます。頻度が高すぎない限り、ユーザーはあまり影響を受けません。

+0

他の回答のコメントに記載されているように私はすでに解決番号3で進行中です。 – mjosh

2

「xxxに購読していない人」のような操作はサポートされていません。

あなたのユースケース(更新していないユーザーに通知を送信する)では、Firebase通知(FCM、firebaseクラウドメッセージと混同しないでください)を使用することをお勧めします。hereが見つかります。

firepointコンソールでは、アプリケーションバージョンごとにターゲットをフィルタできます。そのparticular part of the docのスクリーンショットをご覧ください。私は自分自身でそれを複数回テストしました。それは素晴らしい作品です。 enter image description here

+0

私はFirebaseコンソールで唯一の問題は、アプリケーションがバックグラウンドにあり、それをカスタマイズする方法がないとき、通知がデバイスのシステムトレイに配信されることです。 – mjosh

+0

私は、あなたはタイトルと説明をカスタマイズすることができます(と私は思います)が、それは確かにそれについてです。次の数か月でさらにカスタマイズを追加すると確信していますが、カスタマイズしたいものは何ですか? – Sistr

+0

アプリアイコンと保留中のインテント。ユーザーがアプリではなくPlayストアに直接アクセスしてもらいたい否定ではなく回避策を見つけました。私はバージョン番号の定数を変更し、FCMを通じて送信しているバージョン番号と比較します。 – mjosh

関連する問題