
【Android 5.0対応】Androidにて自身のアプリを開いてるときにプッシュを表示しない実装
いつもGrowth Pushをご利用いただきありがとうございます。
Androidにて、自身のアプリを開いているときにプッシュ通知を表示しない方法をご紹介しましたが、Android L以上から紹介した方法にて動作ができないため、今回Android L以上に対応した方法をご紹介いたします。
まずパーミッションを追加してください。
GrowthPush.getInstance().setReceiveHandler(new DefaultReceiveHandler() { @Override public void onReceive(Context context, Intent intent) { if (!isRunning(context)) super.onReceive(context, intent); } }); |
private boolean isRunning(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Service.ACTIVITY_SERVICE); String[] packages = new String[1]; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { final Set activePackages = new HashSet(); final List processInfos = activityManager.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) { if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { activePackages.addAll(Arrays.asList(processInfo.pkgList)); } } packages = activePackages.toArray(new String[activePackages.size()]); } else { ActivityManager.RunningTaskInfo taskInfo = activityManager.getRunningTasks(1).get(0); packages[0] = taskInfo.topActivity.getPackageName(); } if (packages == null || packages.length <= 0) return false; for (String packageName : packages) { if (context.getPackageName().equals(packageName)) return true; } return false; } |
DefaultReceiveHandler#onReceive内にて、通知を受け取ったときにデバイス上の
プロセスから自身のアプリを取得できた場合に、通知表示の処理を回避するように実装します。
More from my site
- 前の記事(Previous)
Swiftプロジェクトへの導入方法
- 次の記事(Next)
GCMのAPIキー取得方法