2

ngCordova プラグインと一緒に ionic フレームワークで開発しているときに、android で cordova を使用して悪い動作を経験しています。PushPlugin プラグインを使用すると、GCM を使用して通知を受け取ることができます。アプリがバックグラウンドにあり、通知が受信された場合、アプリに入らずに閉じることができますが、アプリを起動すると、新しいデータが受信されたことに気づきません (& 閉じられました) データを保持する方法はありますか? ? 通知だけでなく、後で UI に表示する必要があるデータも含まれているため、必要です。

4

2 に答える 2

1

残念ながら、これは不可能です。ユーザーが通知をクリックすると、コードを実行できます。ユーザーがそれを却下した場合、アプリは決して知りません。

その機能を構築する方法は、ユーザーが表示する必要があるすべての情報を保持するデータベースを用意することです。ユーザーが (通知を開くなどして) 情報を確認したら、サーバーに呼び出しを行い、そのコンテンツを既読としてマークします。

そうすれば、アプリの起動時にサーバーを呼び出して、ユーザーに表示するコンテンツのリストを取得できます。通知がクリックされた場合、そのデータに直接アクセスし、サーバーにアクセスして「閲覧済み」などのマークを付けることができます。

お役に立てば幸いです、頑張ってください!

于 2015-03-08T21:57:27.307 に答える
0

アプリケーションがバックグラウンドにある場合、サーバーからコンテンツをキャッシュするようにプラグインを変更することで、この動作を実現できます。そうすれば、通知が却下された場合でもメッセージを受け取ることができます。プラグインの変更に関する私の回答を読んでください。

アプリがフォアグラウンドかバックグラウンドかに関係なくデータを送信するように追加して、この関数を変更します。PushPlugin.sendExtras(extras)

protected void onMessage(Context context, Intent intent) {
    Log.d(TAG, "onMessage - context: " + context);
    Bundle extras = intent.getExtras();
    if (extras != null)
    {
        if (PushPlugin.isInForeground()) {
            extras.putBoolean("foreground", true);
        }
        else {
            extras.putBoolean("foreground", false);
            if (extras.getString("message") != null && extras.getString("message").length() != 0) {
                createNotification(context, extras);
            }
        }
        // call sendExtras always
        PushPlugin.sendExtras(extras);
    }
}
于 2015-04-16T16:24:22.250 に答える