新建一个 MAUI Blazor 项目:Masa.Blazor.Maui.Plugin.GeTuiSample, 添加对 Masa.Blazor.Maui.Plugin.GeTuiPushBinding 项目的引用
1、初始化个推 SDK
个推 SDK 的初始化在 MainActivity.OnCreate () 或 MainApplication.OnCreate () 方法中都是可以的,我们这里在 MainActivity 中初始化。修改 Platforms->Android->MainActivity.cs 文件,在 MainActivity 的 OnCreate 事件中添加我们的初始化方法
public class MainActivity : MauiAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Com.Igexin.Sdk.PushManager.Instance.Initialize(this);
var cid = Com.Igexin.Sdk.PushManager.Instance.GetClientid(this);
System.Diagnostics.Debug.WriteLine($"cid:{cid}");
}
}
因为我们完成了绑定,所以这里可以使用个推 SDK 中的 Com.Igexin.Sdk 命名空间下的 PushManager 来完成初始化, 初始化方法 Initialize 非常简单,初始化后我们可以通过 GetClientid 方法拿到客户端 ID,方便我们后续在个推平台下发推送测试任务,因为向特定 CID 发送推送是免费的。
2、配置推送服务
继续在 Android 目录下新建推送服务类 DemoPushService
using Android.App;
namespace Masa.Blazor.Maui.Plugin.GeTuiSample
{
[Service(Process = ":pushservice", Exported = false)]
public class DemoPushService : Com.Igexin.Sdk.PushService
{
}
}
我们只要实现一个继承自 Com.Igexin.Sdk.PushService 的类即可。
注意:服务必须指定 Process = ":pushservice",设置了这行代码,系统就会为该服务创建新的进程,DemoPushService 将运行在这个新的独立的进程,它所在的 apk 依旧运行在原来进程。这样就实现了 Android 使用多进程。 android:exported 是 Android 中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。 主要作用是:是否支持其它应用调用。 处于安全考虑我们这里设置为 Exported = false,代表不支持其他应用调用。
修改 AndroidManifest.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/appicon"
android:roundIcon="@mipmap/appicon_round"
android:supportsRtl="true"
android:label="@string/app_name"
android:usesCleartextTraffic="true"
xmlns:tools="http://schemas.android.com/tools">
<service
android:name="Masa.Blazor.Maui.Plugin.GeTuiSample.DemoPushService"
android:exported="false"
android:label="PushService"
android:process=":pushservice"/>
<meta-data android:name="GETUI_APPID" tools:replace="android:value" android:value="这里填你在个推的APPID" />
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
我们在 application 中添加了 xmlns:tools="http://schemas.android.com/tools",作用是在下面的 meta-data 中使用 tools:replace,否则会出现 Android 组件化集成合并 AndroidManifest.xml 的问题,添加 android:label="@string/app_name" 也是为了避免合并问题。 service 表示我们添加的自定义推送类,android:name 的值必须写全命名空间。 GETUI_APPID 部分为个推应用对应的 APPID
我们启动应用,并在个推平台下发一个测试推送