0

まず、私の下手な英語をお詫びします。Parse.com「サーバー」でフィルタリングされた通知を送信できる「マルチサーバー」アプリケーションを開発しています。

私は2つの解決策を試しましたが、両方とも、アプリケーションを起動したときにユーザーがどの「サーバー」を選択するかわからないという事実に関連する問題があります。

アイデア 1 - リアル マルチ サーバー

  1. 手動で n 個Parse.comのサーバーを作成し、互いに完全に分離します
  2. すべてのサーバーキーを次のようなオブジェクトに保存します[Name, AppID, clientKey]
  3. 私のアプリケーションは name 属性をリストします
  4. ユーザーは自分のサーバーを選択します
  5. 次のように Parse を初期化する new を開始Activityします。onCreate()

    String appID = getAppID();
    String cKey = getKey();
    Parse.initialize(this, appID, cKey);
    ParseInstallation.getCurrentInstallation().saveInBackground();
    
  6. (彼がサーバーを変更したい場合は、アプリ データを消去し、新しいキーで Parse を再初期化するだけです)

  7. NullPointerExceptionParse の初期化がまだ呼び出されていないため、アプリが閉じている (アクティブではなく、バックグラウンドではない) ときにプッシュ通知を送信しようとするまで、すべて正常に動作します。

アイデア 2 - シミュレートされたマルチサーバー

  1. 手動で1つのParse.comサーバーを作成します
  2. すべてのテーブルには、次のような新しい列があります (例として)uniqueIdServer
  3. 次のようにアプリケーションで解析を初期化します。

    public class MyApplication extends Application {
    @Override
    public void onCreate() {
        Parse.initialize(this, "ThisTimeIHaveJustOneAppIDIt'sEasy", "SameHere");
        ParseInstallation.getCurrentInstallation().saveInBackground();
        super.onCreate();
    }}
    
  4. 以前のリストを表示しましたが、今回は [name, uniqueID] だけです

  5. ユーザーは自分の「サーバー」を選択します
  6. これで、新しい列を使用してデータを簡単にフィルター処理できます。Parse が独自にイニシャライザーを呼び出すため、アプリを閉じても問題はありません。
  7. しかし、プッシュ通知を一部だけフィルタリングする方法がわかりませんuniqueId
  8. チャネルを使用してみましたが、そのチャネルでのみプッシュを送信するよりも:

        List<String> channels = new ArrayList<>();
    channels.add(getUniqueID());
    ParseInstallation install = ParseInstallation.getCurrentInstallation();
    install.put("channels", channels);
    install.saveEventually();
    
  9. しかし、常に同じです。「アプリケーション時」にユーザーが何を選択するかがわからないため、getUniqueID()バインド"null"または類似するか、さらに悪いことに、チャネルを変更する方法がわかりません(アプリをアンインストールした場合にのみ変更できます)

本当にありがとう、どんな助けでも本当に感謝します。

4

1 に答える 1