You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:22:11