我有一个为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);
}
}
该应用程序在调试模式和发布时完美工作,链接选项设置为"0";无"-这就是我目前在游戏商店里的东西,所以这个应用程序至少可以工作。。。但很明显,我想让它更干净,我很确定我离它不远了
我没有更多的错误/警告,我还尝试设置程序集的忽略链接:Xamarin.Firebase.Common;Xamarin.Firebase.Iid;Xamarin.Firebase.Messaging
,但没有帮助。
为了使firebase消息与链接集一起工作,我在这里缺少了什么;仅SDK程序集";?
链接器有时会删除您想要保留的代码。
您可以使用Android.Runtime.Preserve属性。
public class Example
{
[Android.Runtime.Preserve]
public Example ()
{
}
}
有关更多详细信息,请查看下面的链接。https://learn.microsoft.com/en-us/xamarin/android/deploy-test/linker