微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OneSignal 通知未出现在 Xamarin Forms Android 中 - 发布模式

如何解决OneSignal 通知未出现在 Xamarin Forms Android 中 - 发布模式

我将 Onesignal SDK 用于 Xamarin Forms 通知 - 当我在调试模式下运行应用程序时,通知会到达设备。

但是,在 Release 模式下编译和运行时,设备(Android One)上不会出现任何通知

我怀疑(编译器/链接器?)可能有一些东西被剥离了 - 但我不知道如何解决这个问题。

应用在发布模式下运行,但在某些情况下似乎会崩溃,日志显示以下内容

java.lang.classNotFoundException: Didn't find class "com.onesignal.GcmbroadcastReceiver" on path: DexPathList.......



androidx.core.app.CoreComponentFactory.instantiateReceiver
java.lang.InstantiationException: java.lang.class<com.google.firebase.iid.FirebaseInstanceIdReceiver> cannot be instantiated


androidx.core.app.CoreComponentFactory.instantiateService
java.lang.InstantiationException: java.lang.class<com.onesignal.RestoreKickoffJobService> cannot be instantiated

解决方法

此类消息是由 ProGuard / R8 引起的。您可以禁用它,也可以向 Proguard.cfg 文件添加特定规则以防止代码被剥离。

,

对于可能遇到相同问题的其他人来说,这是为我解决的问题:

  1. 在 Android 项目 proguard.cfg 中创建一个空文件。将构建操作设置为 ProguardConfiguration

  2. 添加以下内容

-keep class com.onesignal.** { *; }
-keep class com.google.firebase.** { *; }

重新构建和重新部署。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。