web-dev-qa-db-ja.com

Xiaomiは、アプリケーションが実行されていないときに通知を受け取りません

Googleプッシュ通知を使用しているアプリケーションで作業しています。 Xiaomi電話で実行中の場合、アプリケーションは通知を受信します。それ以外の場合、殺された場合は通知を受信しません。

アプリケーションが強制終了された場合に通知を受け取りたい場合は、xiaomiのセキュリティアプリから手動で自動再起動アプリを許可する必要があります。ユーザーに確認せずにプログラムでこれを行うためのトリックが必要です。これを行う方法はありますか?

enter image description here

http://en.miui.com/thread-33826-1-1.html

36
N Sharma

Xiaomiの場合、アプリケーションを適切に実行するには、5つの設定を手動で行う必要があります。私はこれについて多くの研究を行ってきましたが、これらの設定をプログラムで修正する方法はありません。これらは設定です:

  1. 自動開始-> ON(アプリの切り替えと再起動)
  2. 開発者オプション->オフのMIUI最適化
  3. 開発者オプションの下のメモリ最適化->低/オフ
  4. バッテリーとパフォーマンスの設定でバックグラウンドアクティビティに制限はありません
  5. バッテリーセーバー-> OFF

アプリが期待どおりに機能するためには、手動設定を行う必要がある他の多くのデバイスがあります。 Lenovo、一部のMicromaxデバイス。企業は、バックグラウンドアクティビティの制限にこれらの種類を課して、全体的なバッテリ寿命を改善します。 facebookやwhatsappなどの一部のアプリは、システムアプリとして含まれている可能性があるため、正しく機能します。

9
Aman Kaushik

MIUI 6および7の後:

MIUI省電力モードはデフォルトで「標準」に設定されています(ロケーションサービスおよびネットワークへのバックグラウンドアクセスは制限されます)

設定する場所:

設定->追加設定->バッテリーとパフォーマンス->アプリのバッテリー使用量の管理->省電力モード-> オフに設定(MIUIはバックグラウンドアクティビティを制限しません)

6
Tony Yeh

最近のアプリメニューでアプリをクリアするか、メモリをクリアすると、xiaomi(またはMIUI rom)は、関連するすべてのサービスとメモリをforce close強制しますユーザーが設定に移動してアプリを強制停止するのと同様のアプリ、

このリンク は同じ問題について話すため、ユーザーが再度開始しない限り、すべてのブロードキャストレシーバーとサービスは終了するため、通知は受信されません。

ただし、設定でアプリのアクセス許可に対してauto-startを有効にしてみてください。それでも動作しない場合は、自動的に再起動して有効にするサービスを作成してくださいauto-start設定では、AutoStartはMIUIで非常に重要です。有効になるまで、すべての通知またはアプリのアクティビティは強制的に閉じられ、開始されません。

2
Ujju

同様の問題に直面し、アプリにBOOT_COMPLETEDレシーバーを追加して修正しました。

以下をマニフェストに追加します。

<receiver
    Android:name=".receivers.BootReceiver"
    Android:enabled="true">
    <intent-filter>
       <action Android:name="Android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

次に、BootReceiverクラスを作成します

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("Android.intent.action.BOOT_COMPLETED")) {

            Intent startServiceIntent = new Intent(context, FBTokenService.class);
            context.startService(startServiceIntent);

            Intent notificationServiceIntent = new Intent(context, FBNotificationService.class);
            context.startService(notificationServiceIntent);
        }
    }
}

これで動作するはずです。

0
Nikhil Gupta