如何为Xamarin Android实现推送通知

我尝试按照教程进行操作:Push notifications to Xamarin.Android
(iOS部分已经起作用)

但是在构建时出现以下错误:

The “ProcessGoogleServicesJson” task was not given a value for the required parameter “ResStringsPath”. ServiceToolStandard.Android

到目前为止,我有:

>我创建了一个Firebase项目
> Firebase控制台:

>下载了google-services.json文件
>复制旧服务器密钥

> Azure:

>创建了通知中心
>插入旧服务器密钥

> Xamarin Forms App(Android):

> AndroidManifest包名称==包名称firebase项目
>我安装了nuget软件包:Xamarin.GooglePlayServices.Base,Xamarin.Firebase.Messaging和Xamarin.Azure.NotificationHubs.Android
>将google-services.json文件添加到项目中,然后选择Build Action到GoogleServiceJson
>将接收器部分添加到AndroidManifest *
>然后创建类Constants,MyFirebaseIIDService,MyFirebaseMessagingService并编辑MainActivity

之后,教程显示“正在构建项目/运行应用程序…”,然后我得到了错误.

*在这里,我不确定在${applicationId}处填写什么:

<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
  <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="${applicationId}" />
  </intent-filter>
</receiver>

谢谢你的帮助!

解决方法:

因此,我不太确定为什么会收到该错误.但是在将Visual Studio从v15.7.1更新到v15.7.2之后,该错误消失了.解决方案可能是重新启动Visual Studio?在本教程中,它说如果您不能选择Build Action“ GoogleServiceJson”,则必须重新启动.也许您仍然必须重新启动它.

对于android:name =“ ${applicationId}”,我使用了与AndroidManifest中“清单”行中的“包”中的相同.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="3" android:versionName="1.2" package="com.xxxxx.ServiceToolStandard" android:installLocation="auto">
[...]
<application android:label="ServiceToolStandard" android:icon="@drawable/icon">
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.xxxxx.ServiceToolStandard" />
        </intent-filter>
    </receiver>
</application>

现在,我可以构建并运行该应用程序了.此外,还可以正确接收来自Azure-“测试发送”的推送通知.

上一篇:C#-Xamarin-Android-Plugin.InAppBilling异常


下一篇:如何在Android中应用尺寸单位?