如何实现xamarin android的推送通知

时间:2018-05-22 13:08:50

标签: android firebase xamarin push-notification firebase-cloud-messaging

我尝试按照教程:Push notifications to Xamarin.Android (iOS部分已经运行)

但是我在构建时遇到以下错误:

  

“ProcessGoogleServicesJson”任务未获得所需参数“ResStringsPath”的值。 ServiceToolStandard.Android

到目前为止我有什么:

  • 我创建了一个firebase项目
  • FirebaseConsole:
    • 下载了google-services.json文件
    • 复制旧服务器密钥
  • 天青:
    • 创建了通知中心
    • 插入旧服务器密钥
  • Xamarin Forms App(Android):
    • AndroidManifest包名==包名称firebase项目
    • 我安装了nuget软件包:Xamarin.GooglePlayServices.Base,Xamarin.Firebase.Messaging和Xamarin.Azure.NotificationHubs.Android
    • 将google-services.json文件添加到项目中并选择Build Action to 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>

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

所以我不太清楚为什么会出现这个错误。但在将Visual Studio从v15.7.1更新到v15.7.2后,错误消失了。可能是,重新启动visual studio是解决方案吗?在教程中它说如果你不能选择Build Action&#34; GoogleServiceJson&#34;则必须重新启动vs。也许你必须重新启动它。

对于android:name =&#34; $ {applicationId}&#34;我使用了和#34;包&#34;出于&#34;清单&#34; 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的推送通知 - &#34;测试发送&#34;收到正确。