android12、如何替换通知蹦床
android 12, how replace the notification trampolines
有android拦截推送通知的sdk,一直在使用notification trampoline进一步打开端activity。在深度链接的情况下,使用此 sdk 的应用程序将打开配置的深度链接处理程序 activity。
trampoline
的代码段:
public class NotificationTrampolineReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final PendingResult asyncResult = goAsync();
ExecutorService executor = Executors.newSingleThreadExecutor();
asycTask(executor, new Runnable() {
@Override
public void run() {
String urlStr = getStringExtra(intent, PUSH_URL);
if (urlStr != null) {
var intent2: Intent = Intent(Intent.ACTION_VIEW, Uri.parse(urlStr));
if (intent2 != null) {
intent2.addFlags(FLAG_ACTIVITY_NEW_TASK);
intent2.addFlags(FLAG_ACTIVITY_BROUGHT_TO_FRONT);
context.startActivity(intent2);
logAnalytics(intent, Message.MessageAction.OPEN);
}
}
asyncResult.finish();
}
});
}
void asycTask(ExecutorService executor, final Runnable task) {
try {
executor.execute(task);
} catch (Throwable ex) {}
}
}
The notification trampolines
is not working in Android 12 anymore。
SDK 中需要通知蹦床来拦截点击并执行类似记录分析事件的操作;单击通知上的 Action
按钮时关闭通知抽屉等。并且此 sdk 不知道应用程序可以配置哪些活动来处理深层链接。
用一个虚拟的activity代替trampoline
会起作用,但感觉不对,即打开activity并在里面打开另一个然后完成这个。
当 android 12 对 notification tramoline
施加限制时,是否建议替换此处的用例?还没找到。
对于先拦截推送通知点击再打开的建议新解决方案是什么activity?
您最好直接从 Notification
启动 Activity
。 Activity
然后可以进行分析并找出 Activity
需要启动的内容,然后委托给它。作为替代方案,已启动的 Activity
可以将广播 Intent
发送到您的 BroadcastReceiver
,它可以完成这项工作。
注意:如果您直接从 Notification
启动 Activity
,则 不是蹦床 。当您直接从 Notification
启动 Service
或 BroadcastReceiver
并且 该组件 然后启动 Activity
时,就会发生蹦床。这个想法是用户需要控制在他的屏幕上弹出的内容。如果他点击一个通知,他希望他的屏幕上会出现一些东西,如果你的 Service
启动一个 Activity
,那随时可能发生并可能打断他。
有android拦截推送通知的sdk,一直在使用notification trampoline进一步打开端activity。在深度链接的情况下,使用此 sdk 的应用程序将打开配置的深度链接处理程序 activity。
trampoline
的代码段:
public class NotificationTrampolineReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final PendingResult asyncResult = goAsync();
ExecutorService executor = Executors.newSingleThreadExecutor();
asycTask(executor, new Runnable() {
@Override
public void run() {
String urlStr = getStringExtra(intent, PUSH_URL);
if (urlStr != null) {
var intent2: Intent = Intent(Intent.ACTION_VIEW, Uri.parse(urlStr));
if (intent2 != null) {
intent2.addFlags(FLAG_ACTIVITY_NEW_TASK);
intent2.addFlags(FLAG_ACTIVITY_BROUGHT_TO_FRONT);
context.startActivity(intent2);
logAnalytics(intent, Message.MessageAction.OPEN);
}
}
asyncResult.finish();
}
});
}
void asycTask(ExecutorService executor, final Runnable task) {
try {
executor.execute(task);
} catch (Throwable ex) {}
}
}
The notification trampolines
is not working in Android 12 anymore。
SDK 中需要通知蹦床来拦截点击并执行类似记录分析事件的操作;单击通知上的 Action
按钮时关闭通知抽屉等。并且此 sdk 不知道应用程序可以配置哪些活动来处理深层链接。
用一个虚拟的activity代替trampoline
会起作用,但感觉不对,即打开activity并在里面打开另一个然后完成这个。
当 android 12 对 notification tramoline
施加限制时,是否建议替换此处的用例?还没找到。
对于先拦截推送通知点击再打开的建议新解决方案是什么activity?
您最好直接从 Notification
启动 Activity
。 Activity
然后可以进行分析并找出 Activity
需要启动的内容,然后委托给它。作为替代方案,已启动的 Activity
可以将广播 Intent
发送到您的 BroadcastReceiver
,它可以完成这项工作。
注意:如果您直接从 Notification
启动 Activity
,则 不是蹦床 。当您直接从 Notification
启动 Service
或 BroadcastReceiver
并且 该组件 然后启动 Activity
时,就会发生蹦床。这个想法是用户需要控制在他的屏幕上弹出的内容。如果他点击一个通知,他希望他的屏幕上会出现一些东西,如果你的 Service
启动一个 Activity
,那随时可能发生并可能打断他。