检测活动启动

时间:2019-01-31 07:37:08

标签: android android-activity push-notification notifications analytics

我在我们的项目中使用了一个外部库。该库显示通知。点击该通知会启动库中的活动。

我想检测活动是否从推送通知启动以跟踪一些分析数据。

有什么方法可以检测到那些通知轻按或活动启动?

3 个答案:

答案 0 :(得分:0)

传递一些额外的元数据,以及为显示通知而生成的pending intent。并在目标活动中进行解析。

 Intent destination = new Intent(context, HomeActivity.class);
  destination.putExtra("SOURCE","NOTIFICATION");

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, destination, PendingIntent.FLAG_CANCEL_CURRENT);

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
            .setContentTitle("Notification Title")
            .setAutoCancel(true)
      .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setContentIntent(pendingIntent)
            .setContentInfo("App")
            .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
            .setColor(context.getColor(R.color.colorAccent))
            .setLights(Color.RED, 1000, 300)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setSmallIcon(R.drawable.ic_like);

 NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());

活动级别:

if(getIntent().getStringExtra("SOURCE").equals("NOTIFICATION")){
  // launched from notification
}

如果您的活动已经开始,您的意图可能会传达给:

@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
    }

答案 1 :(得分:0)

当然可以。创建Intent用于启动目标活动时,可以将参数传递给intent,而Activity启动时,仅从intent中获取外部参数,如果这些参数来自Notification,则您需要执行操作。

答案 2 :(得分:0)

据我了解,您的活动已在通知水龙头上启动。要检测活动启动,可以使用ActivityLifecycleCallbacks。在这种情况下,您将需要覆盖onActivityCreated / onActivityStarted,其中包括创建/启动的活动作为参数。您可以在内部注入分析组件并发送有关已启动活动的事件。

class AppLifecycleCallbacks : ActivityLifecycleCallbacks {
    override fun onActivityStarted(activity: Activity) {
        if (activity is MyActivity) {
            //...
        }
    }

    //...
}