推送通知以打开特定活动

Posted

技术标签:

【中文标题】推送通知以打开特定活动【英文标题】:Push notification to open specific activity 【发布时间】:2018-10-31 23:25:38 【问题描述】:

考虑 3 项活动: (A) 登录活动(主启动器) (B) 主要活动 (C) 比活

用户登录 (A) 后,他们将访问 (B),并且只能从 (B) 访问 (C)。

现在每次打开应用程序时,它都会先启动 (A),然后启动 (B)。

我想制作一个推送通知,点击后它可以访问 (C) 但必须先启动 (B)。

我正在使用 Xamarin.android + Appcenter 推送通知

当我的应用处于前台和后台时,我都可以收到通知。

我的问题是当我的应用在后台时,点击状态栏中收到的通知会导致它重新启动应用,从 (A) 开始。

我需要跳过 (A) 的帮助,因为用户已经登录,打开 (B) 然后打开 (C)

有什么想法吗?希望这不会让你们太困惑。

我也尝试将 launchMode=singleInstance 设置为 (A) 和 (B),但它仍会重新启动应用程序

【问题讨论】:

【参考方案1】:

您无法动态更改启动器活动,但您可以尝试一些解决方法:

创建一个透明的Activity,并使其成为Launcher Activity:

<activity
android:name=".ActivityLauncher"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

然后选择下一个活动onCreate()

if ( logged() ) 
   intent = new Intent(this,ActivityB.class);
 else 
   intent = new Intent(this,ActivityA.class);

startActivity(intent);
finish();

【讨论】:

Xamarin 对于一些事情和初始化 Intent 的语法几乎没有什么不同。最好在答案中提及注释,以免 OP 感到困惑。 感谢您的回答。我试试看【参考方案2】:

您可以发送一个活动名称或一些值来选择您的活动。根据您发送的值,您可以启动活动并在您返回通知活动时将活动添加到后台堆栈中,后台堆栈中的页面将出现。

我一直喜欢这样,希望这对你有用。

【讨论】:

以上是关于推送通知以打开特定活动的主要内容,如果未能解决你的问题,请参考以下文章

从 GCM 推送通知打开地图活动

如何在通知选项卡中单击推送通知消息打开特定片段?

如何在android应用程序活动和非活动状态下处理推送通知

推送通知打开一个新活动

单击推送通知时如何打开活动?

IOS Swift-收到推送通知时应用程序未打开特定选定的标签栏控制器索引