首页 > 其他分享 >MASA MAUI Plugin 集成个推,实现本地消息推送(六)【Android】篇

MASA MAUI Plugin 集成个推,实现本地消息推送(六)【Android】篇

时间:2023-04-18 21:58:32浏览次数:36  
标签:Java MASA Plugin 绑定 MAUI Android 推送

MASA MAUI Plugin (六)集成个推,实现本地消息推送[Android] 篇

背景

MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI 是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的补充和扩展,项目地址https://github.com/masalabs/MASA.MAUI,每个功能都有单独的demo演示项目,考虑到app安装文件体积(虽然MAUI已经集成裁剪功能,但是该功能对于代码本身有影响),届时每一个功能都会以单独的nuget包的形式提供,方便测试,现在项目才刚刚开始,但是相信很快就会有可以交付的内容啦。

前言

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。

介绍

鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见,如电商的活动宣传、资讯类产品进行新闻推送等等,所以关于这个功能我就不过多介绍了。面向海外推送业务MAUI有一些集成Google firebase或其他运营商的可用的示例和绑定库可用,但是国内用户无法使用这些,对于国内比较常见的例如极光、个推等,也没用对应的MAUI或者Xamarin的SDK可用,本人联系过官方也无法提供任何技术支持。但是,这样的困难是无法难倒MASA的开发人员的,所以在各方压力的鞭策下,有了本文,本文以“国内服务提供商个推(https://www.getui.com)的Android 原生SDK”为例,提供Android原生代码到MAUI代码的绑定及实现方式。

思路

Android 的第三方库生态系统非常庞大。 正因为此,使用现有的 Android 库通常比创建一个新的库更合理。其实早在Xamarin的时代,微软已经提供了Android 绑定库(Xamarin)这个项目,实现原理为:创建一个绑定库,该库使用 C# 包装器自动包装库,以便通过 C# 调用来调用 Java 代码,通过使用托管可调用包装器 (MCW) 实现绑定。 MCW 是一个 JNI 桥,在托管代码需要调用 Java 代码时会使用它。 托管可调用包装器还支持对 Java 类型进行子类化以及覆盖 Java 类型的虚拟方法。 同样,每当 Android 运行时 (ART) 代码需要调用托管代码时,它都会通过另一个称为 Android 可调用包装器 (ACW) 的 JNI 桥来实现。 下图说明了此体系结构
在这里插入图片描述

通常情况下,绑定 Android 库(.aar 或 .jar)文件绝非易事;通常它需要花费额外的精力来解决 Java 和 .NET 之间的差异导致的问题。 这些问题会使 MAUI无法绑定 Android 库,并在生成日志中显示为错误消息。

推送功能涉及到的内容非常多,接下来我们只开发最基础的功能,并对此做最精简配置。

开发步骤

一、下载个推Android SDK

个推账号的申请及应用的创建请参考官方文档(个推面向个人开发者,而且我们通过CID发送测试是免费的,无需充值和实名认证)。这里我们着重介绍集成的方法,个推官网的文档示例是使用Maven 方式集成,但是这种方式在MAUI当然无法实现,所以我们需要手动下载SDK对应的aar文件进行手动集成。maven仓库地址为http://mvn.getui.com/nexus/content/repositories/releases/com/getui
我们需要 gtsdk和gtc,分别下载最新的gtc-3.1.12.0.aargtsdk-3.2.13.0.aar

我是怎么知道需要使用这两个文件呢,因为我下载了官方的Demo然后使用maven集成后在
C:\Users\用户名\.gradle\caches\modules-2\files-2.1\com.getui 目录下载了这两个文件

标签:Java,MASA,Plugin,绑定,MAUI,Android,推送
From: https://www.cnblogs.com/sunday866/p/17331303.html

相关文章

  • MASA MAUI Plugin 安卓蓝牙低功耗(二)蓝牙通讯
    MASAMAUIPlugin安卓蓝牙低功耗(二)蓝牙通讯项目背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的......
  • MASA MAUI Plugin IOS蓝牙低功耗(三)蓝牙扫描
    MASAMAUIPluginIOS蓝牙低功耗(三)蓝牙扫描项目背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的......
  • MASA MAUI Plugin (四)条形码、二维码扫描功能
    MASAMAUIPlugin(四)条形码、二维码扫描功能背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的补充......
  • MASA MAUI Plugin (十)iOS消息推送(原生APNS方式)
    MASAMAUIPlugin(十)iOS消息推送(原生APNS方式)背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的补......
  • MASA MAUI Plugin (七)应用通知角标Android+iOS
    MASAMAUIPlugin(七)应用通知角标(小红点)Android+iOS背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAU......
  • MASA MAUI Plugin (九)Android相册多选照片(使用Android Jetpack套件库)
    MASAMAUIPlugin(九)Android相册多选照片(使用AndroidJetpack套件库)背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项......
  • MASA MAUI Plugin (八)Android相册多选照片(Intent 方式)
    MASAMAUIPlugin(八)Android相册多选照片(Intent方式)背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MA......
  • Run Configuration Error: Broken configuration due to unavailable plugin or inval
    解决RunConfigurationError:Brokenconfigurationduetounavailablepluginorinvalidconfigurationdat这个问题:不知道在哪里设置的原因,本人瞎点了几处设置,结果导致tomcat不可以运行了,后来经多方博客指导,终于得出结论,是插件那里有问题了,更改很简单,点击file->settings->pl......
  • Plugin ‘Android WiFi ADB’ is compatible with IntelliJ IDEA only because it doe
    Plugin‘AndroidWiFiADB’iscompatiblewithIntelliJIDEAonlybecauseitdoesn’tdefineanyexplicitmoduledependenciesAndroidStudio中安装AndroidWiFiADB插件重启时报错怎么解决Plugin‘AndroidWiFiADB’iscompatiblewithIntelliJIDEAonlyb......
  • Webpack中手动实现Loader与Plugin
    Loaderloader是一个转换器,用于对源代码进行转换。工作流程webpack.config.js里配置了一个模块的Loader;2.遇到相应模块文件时,触发了该模块的loader;3.loader接受了一个表示该模块文件内容的source;4.loader使用webapck提供的一系列api对source进行转换,得到一......