如何解决Firebase消息在Xamarin.Android上运行时缺少哪个proguard配置?
我有一个已经打包用于Android的Xamarin表单应用,该应用已经部署在Play商店中。我尝试使用“仅SDK程序集”与以下proguard.cfg文件进行链接:
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class com.google.gms.** { *; }
-dontwarn com.google.gms.**
-keep class com.google.firebase.** { *; }
-dontwarn com.google.firebase.**
-keep class android.support.v7.widget.** { *; }
-dontwarn android.support.v7.widget.*
-keep class android.support.v4.widget.Space { *; }
-dontwarn android.support.v4.widget.Space
我已经注意到该应用程序总体运行良好,但是Firebase从未使用此配置向该应用程序返回令牌。我正在使用以下FirebaseMessagingService
的实现,而在我的情况下,从未调用OnNewToken(string)
:
[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class MyFirebaseMessagingService : FirebaseMessagingService
{
public MyFirebaseMessagingService()
{
}
public override async void OnNewToken(string token)
{
try
{
await SecureStorage.SetAsync("fcm_token",token);
}
catch (Exception e)
{
// Possible that device doesn't support secure storage on device.
}
}
public override void OnMessageReceived(RemoteMessage p0)
{
base.OnMessageReceived(p0);
new NotificationHelper().CreateNotification(p0.Data);
}
}
该应用程序在调试模式下以及在链接选项设置为“无”的情况下均能完美运行-这是我目前在游戏商店中所拥有的内容,因此该应用程序至少可以运行...但是显然我希望使其更加清洁和我很确定我离它不远。
我没有更多的错误/警告,并且我还尝试设置忽略程序集的链接:Xamarin.Firebase.Common;Xamarin.Firebase.Iid;Xamarin.Firebase.Messaging
,但这无济于事。
为了使Firebase消息能够将链接设置为“仅SDK程序集”,我在这里缺少什么?
解决方法
链接器有时会删除您要保留的代码。
您可以使用Android.Runtime.Preserve属性。
public class Example
{
[Android.Runtime.Preserve]
public Example ()
{
}
}
有关更多详细信息,请检查以下链接。 https://docs.microsoft.com/en-us/xamarin/android/deploy-test/linker
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。