首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Xamarin Forms:Prism: Android :MainActivity:点击推送通知:Android全球不支持PushAsync,请使用NavigationPage

基础概念

Xamarin.Forms 是一个开源的跨平台 UI 框架,允许开发者使用 C# 和 .NET 创建适用于 Android、iOS 和 UWP 的应用程序。Prism 是一个用于 Xamarin.Forms 的应用程序框架,提供了依赖注入、导航、命令和事件聚合等功能。

相关优势

  1. 跨平台:Xamarin.Forms 允许开发者使用一套代码库构建多个平台的应用程序。
  2. 丰富的 UI 控件:Xamarin.Forms 提供了丰富的 UI 控件,可以满足大部分应用的需求。
  3. Prism 框架:Prism 提供了模块化、依赖注入和导航等功能,使得应用程序更加模块化和易于维护。

类型

Xamarin.Forms 和 Prism 的结合使用可以分为以下几种类型:

  1. 模块化应用:使用 Prism 的模块化功能,将应用拆分为多个独立的模块。
  2. 依赖注入:使用 Prism 的依赖注入功能,管理应用程序中的依赖关系。
  3. 导航:使用 Prism 的导航功能,实现应用程序的页面跳转。

应用场景

Xamarin.Forms 和 Prism 结合使用适用于以下场景:

  1. 跨平台应用开发:需要同时支持 Android 和 iOS 平台的应用开发。
  2. 大型企业应用:需要模块化、依赖注入和导航功能的大型企业应用。

问题分析

在 Xamarin.Forms 中使用 Prism 框架时,可能会遇到 PushAsync 方法在 Android 上不支持的问题。这是因为 PushAsync 方法在某些情况下可能会导致导航问题,特别是在处理推送通知时。

解决方案

为了解决这个问题,可以使用 NavigationPage 来处理导航。以下是一个示例代码:

代码语言:txt
复制
// 在 MainActivity 中处理推送通知
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

    // 创建 NavigationPage
    var navigationPage = new NavigationPage(new MainPage());

    // 处理推送通知
    var notification = Intent.GetStringExtra("notification");
    if (!string.IsNullOrEmpty(notification))
    {
        // 使用 NavigationPage 进行导航
        navigationPage.PushAsync(new NotificationPage(notification));
    }

    LoadApplication(new App());
}

参考链接

  1. Xamarin.Forms 官方文档
  2. Prism for Xamarin.Forms 官方文档
  3. Xamarin.Essentials 官方文档

通过使用 NavigationPage 来处理导航,可以避免 PushAsync 方法在 Android 上不支持的问题,确保应用程序的稳定性和可靠性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台的用户界面

Xamarin.Forms 是一个跨平台的、基于原生控件的UI工具包,开发人员可以轻松的创建适用于 Android,iOS 以及 Windows Phone的用户界面。...其系统需求如下: · Windows 7 或更新的作业系统版本 · Java SDK · Android SDK · Xamarin.Android for Visual Studio 使用Xamarin...Phone 应用程序 在Xamarin Studio中,选择 File > New > Solution, 当New Solution对话框出现后,点击 C#>Mobile Apps, 然后选择 Blank...使用 Xamarin.Forms Page Android 创建一个Activity类型,并且使用 MainLauncher 特性修饰,在 OnCreate 方法中,初始化Xamarin.Forms框架...Xamarin.Forms 定义了 INavigation 接口来处理页面导航相关的逻辑: public interface INavigation { Task PushAsync(Page page

12.9K70

Xamarin 学习笔记 - Page(页面)

引言 在之前的章节,我讲解了如何为Android或者iOS应用程序开发准备环境以及Layout布局的一些基本概念。 在本章中,我将开始在Xamarin.Forms中展示我们页面的结构。...Xamarin.Forms提供了许多可用的页面,以允许提出各种不同的导航体验。为了精确的定义什么是一个Xamarin.Forms.Page的示例,官方的文档给出了一个清晰而简明的定义。...邀请你在如下链接了解更多相关信息: https://developer.xamarin.com/api/type/Xamarin.Forms.NavigationPage/ TabbedPage 如同该类型的名称一样...(new Page1()); IsPresented = false; } } 属性IsPresented表示点击后应隐藏或不显示主-从菜单。...、使用移动设备定位、手机系统级通知等等功能。

4.6K20
  • Xamarin 技术全解析

    - 点击下一步,输入App 名称, 例如:FirstXamariniOS,一路点击下一步,工程创建完成。 下面是生成的iOS工程结构截图: ?...- 点击下一步,输入App 名称, 例如:FirstXamarinAndroid,一路点击下一步,工程创建完成。 下面是生成的Android工程结构截图: ?...如果有Eclipse进行Android编程经验的话会发现,这个Xamarin Android工程的项目结构与Eclipse的结构很类似,都包含了默认的MainActivity以及布局文件,基本的类名称都是一致的...2.3 使用Xamarin.Forms来构建跨平台的应用 Xamarin.Forms 是一个创建跨平台用户界面的库,通过Xamarin.Forms 可以一次编码生成基于各个移动平台(iOS, Android...3.4 支持Xamarin的工具 在微软收购 Xamarin 之后,全球最大的控件公司葡萄城马上做出反应,在知名的 ComponentOne Studio 产品中加入了 Xamarin 平台。

    5.9K70

    跨平台应用框架_安卓前端框架

    移动市场的现状 截至2019年12月,全球活跃网民已超45亿。他们每人平均上网时间为6小时42分钟,相当于每年上网超过100天。...渐进式Web应用程序(PWA) 其中一个能解决问题的例子是渐进式 Web 应用(PWA),它基本上是模仿原生应用程序行为的一个网站(例如,在发送推送通知、脱机工作,或者只是添加到移动设备的主屏幕上)。...Xamarin.Native和Xamarin.Forms Xamarin与其他框架的不同之处在于,它提供了两种编译跨平台移动应用的方式:Xamarin Native(也称为Xamarin.Android.../iOS)和Xamarin.Forms。...Xamarin.Android/iOS允许开发人员使用原生控件和布局,而Xamarin.Forms基于标准UI元素,允许从单个API设计应用程序,但如果你需要更完美的原生UI,则可能还不够。

    2.6K20

    2020年了,跨平台开发框架现在怎样了?

    移动市场的现状 截至2019年12月,全球活跃网民已超45亿。他们每人平均上网时间为6小时42分钟,相当于每年上网超过100天。...渐进式Web应用程序(PWA) 其中一个能解决问题的例子是渐进式 Web 应用(PWA),它基本上是模仿原生应用程序行为的一个网站(例如,在发送推送通知、脱机工作,或者只是添加到移动设备的主屏幕上)。...Xamarin.Native和Xamarin.Forms Xamarin与其他框架的不同之处在于,它提供了两种编译跨平台移动应用的方式:Xamarin Native(也称为Xamarin.Android.../iOS)和Xamarin.Forms。...Xamarin.Android/iOS允许开发人员使用原生控件和布局,而Xamarin.Forms基于标准UI元素,允许从单个API设计应用程序,但如果你需要更完美的原生UI,则可能还不够。

    2.4K20

    Android 桌面角标二三事

    我们广大用户对于通知消息栏和桌面角标都很熟悉,Google Android 是在 8.0 以后加入的,但是对于部分国内厂商较早就有尝试,和尚今天对桌面角标进行简单尝试; 华为厂商...在需要的位置调用设置桌面角标 setHuaweiBadge(getApplicationContext(), 10); 注意事项 Bundle 参数中的 class 并非固定的 MainActivity...而是带包名完整路径的启动 Activity,例如:com.test.name.SplashActivity; 建议在调用时添加 try-catch 异常处理,防止桌面不支持角标时接口抛异常; 若关闭角标显示...发送通知消息,注意 Android 8.0 以后需要设置通知渠道 private void notifyChannel() { NotificationManager notificationManager...,注意需要 setOngoing(false); 小米的桌面角标在点击当前推送消息或点击应用图标时,会自动取消角标数,不用单独处理; 小米的桌面角标方式应用场景相对较少,须配合推送消息; 三星 / LG

    2.5K21

    国内 Mono 相关文章汇总

    搜狐畅游的免费开源游戏引擎Genesis-3D Mono for Android—初体验之“电话拨号器” 分布式唯一ID生成服务 使用PushSharp给iOS应用推送消息 使用MonoTouch.Dialog...简化iOS界面开发 VS2012中Mono For Android 打包编译APK文件详细图文教程 使用PushSharp给iOS应用推送消息 Android(1)—Mono For Android 环境搭建及破解...多界面 Xamarin.Android活动的生命周期 Xamarin.Android下获取与解析JSON APP并非一个人在战斗,还有API—Xamarin.Android回忆录 Xamarin.Android...通知详解 Xamarin.Android广播接收器与绑定服务 Xamarin.Android之ActionBar与菜单 绿色版的Linux.NET——“Jws.Mono”(续) 如玫瑰一般的PHP...CentOS 7.2下安装Mono 5.0 MONO 如何打包 .NET程序独立运行(winform篇) 从零開始学Xamarin.Forms(一) 概述 GODOT 3.0 开发进度汇报 #7 .NET

    11.2K60

    极光推送---JPush---服务器端和android端怎么做

    你可以把那个all改成  tag传送  ;改成alais别名推送 等 服务器端就写好了,接下来就是android端: 客户端首先是清单文件要把  在极光上申请的demo 全部copy一份到你现在的工程里面...; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log...JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { Log.d(TAG, "[MyReceiver] 接收到推送下来的通知...notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的...JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { Log.d(TAG, "[MyReceiver] 用户点击打开了通知

    97740

    Android开发笔记(一百零四)消息推送SDK

    可在MainApplication或者MainActivity中调用。 stopPush : 暂停接收通知。 resumePush : 恢复接收通知。...4、JPushInterface.ACTION_NOTIFICATION_OPENED 表示点击通知栏的事件,对应的intent-filter是<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED...sdk,它支持ios和android,但不支持winphone,不过服务器除了java,还支持PHP、Python、C++、C#等等。...模板Template定义了消息的具体样式,下面是个推包装好的几个常用模板: --NotificationTemplate : 通知模板。自动在通知栏里显示消息,点击后跳到app首页。...自动在通知栏里显示消息,点击后跳转到指定URL。 --NotyPopLoadTemplate : 下载提示模板。自动在通知栏里显示消息,点击后下载指定安装包。

    1.5K10

    Android 新特性_Android10使用

    当然,也可以通过修改配置,让应用不支持多窗口模式。 2....而当用户同时收到来自不同联系人的消息时,可以点击知卡片上的通知拆分按钮对已经合并的通知进行拆分,拆分后的通知可以像其他的独立通知一样进行回复和处理。...面对各种应用的通知推送Android N取以优先级为核心的通知管理方式,而在 Android N中,通知管理也变得更加简单:只需在需要在相应的通知上左右轻扫便能看见一个设置图标,点击该图标就能在通知上方呼出一个简洁的通知优先级设定界面...若要获取所有可用卷的列表,包括可移动介质卷,请使用 StorageManager.getVolumesList()。...在Android N尚未推送之际,黑马的惊喜福利先N一步从天而降!赶在Android N系统推送之前,黑马程序员的优秀讲师已经将《An droid N新特性课程》视频已经录制完毕!

    1.2K20

    个人支付免签系统 Api 版本

    特点:支付回调通知,0手续费实时到账(不经过任何第三方,直接到账微信/支付宝余额),全部服务端源代码,支持php/java/python等语言直接接入(请使用Api版本傻瓜式接入),监听方式非xp框架HOOK...- 接收推送客户端信息 android - 验证客户端 客户端配置 api 地址填写: http(s)://你的服务器地址:端口号/addons/pay/ 注意:必须以反斜杠结尾 签名密匙填写: config.../config.default.js 里的 secretkey 值 点击保存提示配置成功即可,没有其他设置!...答: 服务端源码是用来接收客户端推送收款信息,客户端是监听支付宝和微信的收款信息并实时推送到服务器。 问: 微信公众号可以使用吗?...不支持个人申请。所以,便有了个人的一些解决方案,手机安装一个 app,然后这个服务监听手机收到的通知,如果是收到收款的通知,就把信息推送到指定的 url 去。

    1.7K20

    Beta 6 现已发布,Android Q 正式版即将面世!

    如果下列特性与您的应用相关,我们建议您添加相应支持: 互动性更高的消息通知: 如果您的通知中包含消息,请启用通知内的智能回复及建议操作,以吸引用户并让他们可以立即采取行动。...更优秀的 codec 编解码器: 媒体应用请利用 AV1 进行视频传输,并通过 HDR 10+ 播放高动态范围视频;语音和音乐应用请使用 Opus 进行音频编码。...如果您已加入,无需任何行动,设备将很快收到更新推送。此外,系统映像文件也已开放下载。Android Q Beta 测试计划中合作伙伴也会在接下来的数周内更新他们的设备。...如果您对平台 (包括隐私和行为变更)、应用兼容性或第三方 SDK 有任何反馈建议,请☟点击下方链接☟提交。...点击这里开启您的 Android Q Beta 之旅!

    47540

    Android Q 正式版发布!

    如果下列特性与您的应用相关,我们建议您添加相应支持: 互动性更高的消息通知: 如果您的通知中包含消息,请启用通知内的智能回复及建议操作,以吸引用户并让他们可以立即采取行动。...更优秀的 codec 编解码器: 媒体应用请利用 AV1 进行视频传输,并通过 HDR 10+ 播放高动态范围视频;语音和音乐应用请使用 Opus 进行音频编码。...如果您已加入,无需任何行动,设备将很快收到更新推送。此外,系统映像文件也已开放下载。Android Q Beta 测试计划中合作伙伴也会在接下来的数周内更新他们的设备。...services.google.cn/fb/forms/yo… 最后,感谢大家参与我们此前在 Reddit 网站上举办的 AMA 问答活动!...点击这里开启您的 Android Q Beta 之旅!

    1.4K20

    Android版-支付宝APP支付

    上一篇详细介绍了微信APP支付 点击这里 此篇文章来详细介绍下支付宝APP支付 目录 1、支付宝与微信对比(申请、费率、结算周期) 2、支付宝上线应用 3、支付宝App支付Android集成流程详解...沙箱环境测试APP支付中请使用沙箱版钱包测试:点击开发者中心-沙箱环境-沙箱工具 EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX); ?...设置支付宝业务参数 注意: 支付宝App支付不支持沙盒模式(此坑纠结了很长时间),使用沙盒模式会出现ALI40247 错误,文末有错误的详细说明。...IPay.getIntance(MainActivity.this).toPay(IPay.PayMode.ALIPAY,order,new IPay.IPayListener()...:message)); Toast.makeText(MainActivity.this, "回调过来的状态》" + alicode, Toast.LENGTH_SHORT

    2.7K40

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券