From faa6904ce3c749463a6b44721058a5de27d1f77f Mon Sep 17 00:00:00 2001
From: Matt Portune <59324545+mportune-bw@users.noreply.github.com>
Date: Mon, 3 May 2021 13:36:09 -0400
Subject: [PATCH] update firebase messaging lib and implementation (#1383)
* update firebase messaging lib and implementation
* update clean-fdroid script for updated firebase
---
.github/scripts/android/clean-fdroid.ps1 | 14 +++--------
src/Android/Android.csproj | 4 +--
src/Android/Properties/AndroidManifest.xml | 14 -----------
src/Android/Push/FirebaseInstanceIdService.cs | 25 -------------------
src/Android/Push/FirebaseMessagingService.cs | 13 ++++++++--
5 files changed, 17 insertions(+), 53 deletions(-)
delete mode 100644 src/Android/Push/FirebaseInstanceIdService.cs
diff --git a/.github/scripts/android/clean-fdroid.ps1 b/.github/scripts/android/clean-fdroid.ps1
index 11b5f9b1f..23a8221ed 100644
--- a/.github/scripts/android/clean-fdroid.ps1
+++ b/.github/scripts/android/clean-fdroid.ps1
@@ -30,16 +30,6 @@ $xml.Load($androidManifest);
$nsAndroid=New-Object System.Xml.XmlNamespaceManager($xml.NameTable);
$nsAndroid.AddNamespace("android", "http://schemas.android.com/apk/res/android");
-$firebaseReceiver1=$xml.SelectSingleNode(`
- "/manifest/application/receiver[@android:name='com.google.firebase.iid.FirebaseInstanceIdInternalReceiver']", `
- $nsAndroid);
-$firebaseReceiver1.ParentNode.RemoveChild($firebaseReceiver1);
-
-$firebaseReceiver2=$xml.SelectSingleNode(`
- "/manifest/application/receiver[@android:name='com.google.firebase.iid.FirebaseInstanceIdReceiver']", `
- $nsAndroid);
-$firebaseReceiver2.ParentNode.RemoveChild($firebaseReceiver2);
-
$xml.Save($androidManifest);
Write-Output "########################################"
@@ -56,6 +46,10 @@ $firebaseNode=$xml.SelectSingleNode(`
"/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.Firebase.Messaging']", $ns);
$firebaseNode.ParentNode.RemoveChild($firebaseNode);
+$daggerNode=$xml.SelectSingleNode(`
+ "/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.Google.Dagger']", $ns);
+$daggerNode.ParentNode.RemoveChild($daggerNode);
+
$safetyNetNode=$xml.SelectSingleNode(`
"/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.GooglePlayServices.SafetyNet']", $ns);
$safetyNetNode.ParentNode.RemoveChild($safetyNetNode);
diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj
index ed1a315c2..f0a6178dc 100644
--- a/src/Android/Android.csproj
+++ b/src/Android/Android.csproj
@@ -82,7 +82,7 @@
1.5.3.2
- 71.1740.0
+ 121.0.1
@@ -90,6 +90,7 @@
+
71.1600.0
@@ -113,7 +114,6 @@
-
diff --git a/src/Android/Properties/AndroidManifest.xml b/src/Android/Properties/AndroidManifest.xml
index a6af6738b..675c2ec89 100644
--- a/src/Android/Properties/AndroidManifest.xml
+++ b/src/Android/Properties/AndroidManifest.xml
@@ -40,20 +40,6 @@
android:resource="@xml/filepaths" />
-
-
-
-
-
-
-
-
-
diff --git a/src/Android/Push/FirebaseInstanceIdService.cs b/src/Android/Push/FirebaseInstanceIdService.cs
deleted file mode 100644
index 2ddcac048..000000000
--- a/src/Android/Push/FirebaseInstanceIdService.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-#if !FDROID
-using Android.App;
-using Android.Content;
-using Bit.App.Abstractions;
-using Bit.Core;
-using Bit.Core.Abstractions;
-using Bit.Core.Utilities;
-using Firebase.Iid;
-
-namespace Bit.Droid.Push
-{
- [Service]
- [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
- public class FirebaseInstanceIdService : Firebase.Iid.FirebaseInstanceIdService
- {
- public async override void OnTokenRefresh()
- {
- var storageService = ServiceContainer.Resolve("storageService");
- var pushNotificationService = ServiceContainer.Resolve("pushNotificationService");
- await storageService.SaveAsync(Constants.PushRegisteredTokenKey, FirebaseInstanceId.Instance.Token);
- await pushNotificationService.RegisterAsync();
- }
- }
-}
-#endif
diff --git a/src/Android/Push/FirebaseMessagingService.cs b/src/Android/Push/FirebaseMessagingService.cs
index a7be046bb..5351436c2 100644
--- a/src/Android/Push/FirebaseMessagingService.cs
+++ b/src/Android/Push/FirebaseMessagingService.cs
@@ -1,7 +1,7 @@
#if !FDROID
using Android.App;
-using Android.Content;
using Bit.App.Abstractions;
+using Bit.Core.Abstractions;
using Bit.Core.Utilities;
using Firebase.Messaging;
using Newtonsoft.Json;
@@ -10,10 +10,19 @@ using Xamarin.Forms;
namespace Bit.Droid.Push
{
- [Service]
+ [Service(Exported=false)]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class FirebaseMessagingService : Firebase.Messaging.FirebaseMessagingService
{
+ public async override void OnNewToken(string token)
+ {
+ var storageService = ServiceContainer.Resolve("storageService");
+ var pushNotificationService = ServiceContainer.Resolve("pushNotificationService");
+
+ await storageService.SaveAsync(Core.Constants.PushRegisteredTokenKey, token);
+ await pushNotificationService.RegisterAsync();
+ }
+
public async override void OnMessageReceived(RemoteMessage message)
{
if (message?.Data == null)