OneSignal在Android API23及以下设备失效,Xamarin.Android构建失败求助
解决OneSignal在Android 6.0及以下设备的兼容性问题与Xamarin构建失败错误
我来帮你一步步解决这两个问题——OneSignal通知在低版本Android设备失效的问题,还有Xamarin.Android的构建失败错误:
一、修复OneSignal在Android 6.0(API 23)及以下设备的通知功能
你添加的C2D_MESSAGE权限是关键,但需要确保配置完全正确,再配合必要的低版本兼容设置:
- 修正权限声明:
要同时声明权限本身和使用权限,而且包名必须和你的应用包名完全一致(替换packagename为你实际的应用包名,比如com.yourcompany.yourapp):<!-- 声明权限 --> <permission android:name="com.yourcompany.yourapp.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <!-- 申请使用该权限 --> <uses-permission android:name="com.yourcompany.yourapp.permission.C2D_MESSAGE" /> - 添加低版本FCM/C2DM必需的权限:
Android 6.0及以下设备需要额外的基础权限才能接收推送,在AndroidManifest.xml里添加:<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.INTERNET" /> - 检查OneSignal的Manifest配置:
确保你已经正确添加了OneSignal的Receiver和Service组件,这些组件是低版本设备接收推送的核心:<receiver android:name="com.onesignal.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.yourcompany.yourapp" /> </intent-filter> </receiver> <service android:name="com.onesignal.GcmIntentService" /> - 验证初始化逻辑:
在应用启动时(比如MainActivity的OnCreate方法)确保OneSignal初始化代码正确执行,低版本设备不需要动态申请通知权限(通知权限在API 23及以上才需要动态申请),所以直接初始化即可:OneSignal.Initialize("YOUR_ONESIGNAL_APP_ID"); OneSignal.SetSubscription(true);
二、解决Xamarin.Android构建失败错误
Xamarin.Android does not support running the previous version这个错误通常是构建缓存或版本不匹配导致的,试试这些步骤:
- 清理并重新构建解决方案:
在Visual Studio中,依次点击Build->Clean Solution,等待清理完成后再点击Build->Rebuild Solution,这能清除旧的构建缓存。 - 手动删除bin/obj文件夹:
找到你的Xamarin.Android项目所在的文件夹,删除bin和obj两个文件夹(这两个是构建生成的临时文件),然后重新打开解决方案并构建。 - 检查版本兼容性:
打开项目属性的Application选项卡,确保:Minimum Android version设置为你需要兼容的最低版本(比如API 16)Compile using Android version和Target Android version与你安装的Xamarin.Android版本匹配
- 排查隐藏的编译错误:
有时候这个错误是因为项目存在未解决的编译错误(比如代码语法错误、缺失引用),打开Error List面板,解决所有红色的编译错误后再重新构建。
内容的提问来源于stack exchange,提问作者Fatih akbaba
相关产品推荐
相关产品推荐

