まず、私の下手な英語をお詫びします。Parse.com「サーバー」でフィルタリングされた通知を送信できる「マルチサーバー」アプリケーションを開発しています。
私は2つの解決策を試しましたが、両方とも、アプリケーションを起動したときにユーザーがどの「サーバー」を選択するかわからないという事実に関連する問題があります。
アイデア 1 - リアル マルチ サーバー
- 手動で n 個
Parse.comのサーバーを作成し、互いに完全に分離します - すべてのサーバーキーを次のようなオブジェクトに保存します
[Name, AppID, clientKey] - 私のアプリケーションは name 属性をリストします
- ユーザーは自分のサーバーを選択します
次のように Parse を初期化する new を開始
Activityします。onCreate()String appID = getAppID(); String cKey = getKey(); Parse.initialize(this, appID, cKey); ParseInstallation.getCurrentInstallation().saveInBackground();(彼がサーバーを変更したい場合は、アプリ データを消去し、新しいキーで Parse を再初期化するだけです)
NullPointerExceptionParse の初期化がまだ呼び出されていないため、アプリが閉じている (アクティブではなく、バックグラウンドではない) ときにプッシュ通知を送信しようとするまで、すべて正常に動作します。
アイデア 2 - シミュレートされたマルチサーバー
- 手動で1つの
Parse.comサーバーを作成します - すべてのテーブルには、次のような新しい列があります (例として)
uniqueIdServer 次のようにアプリケーションで解析を初期化します。
public class MyApplication extends Application { @Override public void onCreate() { Parse.initialize(this, "ThisTimeIHaveJustOneAppIDIt'sEasy", "SameHere"); ParseInstallation.getCurrentInstallation().saveInBackground(); super.onCreate(); }}以前のリストを表示しましたが、今回は [name, uniqueID] だけです
- ユーザーは自分の「サーバー」を選択します
- これで、新しい列を使用してデータを簡単にフィルター処理できます。Parse が独自にイニシャライザーを呼び出すため、アプリを閉じても問題はありません。
- しかし、プッシュ通知を一部だけフィルタリングする方法がわかりません
uniqueId チャネルを使用してみましたが、そのチャネルでのみプッシュを送信するよりも:
List<String> channels = new ArrayList<>(); channels.add(getUniqueID()); ParseInstallation install = ParseInstallation.getCurrentInstallation(); install.put("channels", channels); install.saveEventually();しかし、常に同じです。「アプリケーション時」にユーザーが何を選択するかがわからないため、
getUniqueID()バインド"null"または類似するか、さらに悪いことに、チャネルを変更する方法がわかりません(アプリをアンインストールした場合にのみ変更できます)
本当にありがとう、どんな助けでも本当に感謝します。