Googleプッシュ通知を使用しているアプリケーションで作業しています。 Xiaomi電話で実行中の場合、アプリケーションは通知を受信します。それ以外の場合、殺された場合は通知を受信しません。
アプリケーションが強制終了された場合に通知を受け取りたい場合は、xiaomiのセキュリティアプリから手動で自動再起動アプリを許可する必要があります。ユーザーに確認せずにプログラムでこれを行うためのトリックが必要です。これを行う方法はありますか?
Xiaomiの場合、アプリケーションを適切に実行するには、5つの設定を手動で行う必要があります。私はこれについて多くの研究を行ってきましたが、これらの設定をプログラムで修正する方法はありません。これらは設定です:
アプリが期待どおりに機能するためには、手動設定を行う必要がある他の多くのデバイスがあります。 Lenovo、一部のMicromaxデバイス。企業は、バックグラウンドアクティビティの制限にこれらの種類を課して、全体的なバッテリ寿命を改善します。 facebookやwhatsappなどの一部のアプリは、システムアプリとして含まれている可能性があるため、正しく機能します。
MIUI 6および7の後:
MIUI省電力モードはデフォルトで「標準」に設定されています(ロケーションサービスおよびネットワークへのバックグラウンドアクセスは制限されます)
設定する場所:
設定->追加設定->バッテリーとパフォーマンス->アプリのバッテリー使用量の管理->省電力モード-> オフに設定(MIUIはバックグラウンドアクティビティを制限しません)
最近のアプリメニューでアプリをクリアするか、メモリをクリアすると、xiaomi(またはMIUI rom)は、関連するすべてのサービスとメモリをforce close強制しますユーザーが設定に移動してアプリを強制停止するのと同様のアプリ、
このリンク は同じ問題について話すため、ユーザーが再度開始しない限り、すべてのブロードキャストレシーバーとサービスは終了するため、通知は受信されません。
ただし、設定でアプリのアクセス許可に対してauto-startを有効にしてみてください。それでも動作しない場合は、自動的に再起動して有効にするサービスを作成してくださいauto-start設定では、AutoStartはMIUIで非常に重要です。有効になるまで、すべての通知またはアプリのアクティビティは強制的に閉じられ、開始されません。
同様の問題に直面し、アプリに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);
}
}
}
これで動作するはずです。