React Native iOS构建失败:OneSignalNotificationServiceExtension中提示“no such module 'OneSignalExtension'”
React Native iOS构建失败:OneSignalNotificationServiceExtension中提示“no such module 'OneSignalExtension'”
看起来你遇到的问题是OneSignal v5.x版本的Notification Service Extension导入逻辑不匹配导致的,结合你的配置和报错信息,我整理了几个针对性的解决步骤:
1. 修正NotificationService.swift的导入语句
OneSignal v5.x已经将Extension相关的API整合到主OneSignal模块中,不再需要导入OneSignalExtension。你需要修改OneSignalNotificationServiceExtension/NotificationService.swift的内容:
将开头的导入代码:
import UserNotifications import OneSignalExtension
替换为:
import UserNotifications import OneSignal
同时,文件中调用OneSignalExtension的方法也要同步改成OneSignal:
// 替换原方法调用 OneSignalExtension.didReceiveNotificationExtensionRequest(self.receivedRequest, with: bestAttemptContent, withContentHandler: self.contentHandler) // 改为 OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: bestAttemptContent, withContentHandler: self.contentHandler) // 替换过期处理方法 OneSignalExtension.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent) // 改为 OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: bestAttemptContent)
2. 确认Podfile的Extension Target配置正确
你的Podfile中已经为Extension target添加了OneSignalXCFramework依赖,这部分是正确的,但需要确保执行pod install后,该依赖确实关联到了Extension target:
target 'OneSignalNotificationServiceExtension' do pod 'OneSignalXCFramework', '>= 5.0.0', '< 6.0' end
3. 检查Xcode中Extension Target的Build Settings
打开Xcode,选中OneSignalNotificationServiceExtension target,进入Build Settings标签,确认以下配置:
- Framework Search Paths:确保包含
$(inherited)和${PODS_ROOT}/OneSignalXCFramework(如果没有,手动添加这两个路径) - Other Linker Flags:确保包含
$(inherited) - Always Embed Swift Standard Libraries:设置为
Yes(Swift编写的Extension必须开启这个配置)
4. 重新清理并安装依赖
虽然你已经执行过清理操作,但可以再完整执行一次,彻底清除缓存问题:
# 删除Pods和本地DerivedData缓存 rm -rf ios/Pods ios/DerivedData rm -rf ~/Library/Developer/Xcode/DerivedData # 重新安装Pods依赖 cd ios pod deintegrate pod install --repo-update cd ..
5. 验证Xcode Target依赖
在Xcode中,选中OneSignalNotificationServiceExtension target,进入Build Phases标签:
- 检查Target Dependencies是否包含
Pods-OneSignalNotificationServiceExtension - 检查Link Binary With Libraries是否包含
OneSignalXCFramework
完成以上步骤后,重新尝试构建项目,应该就能解决找不到模块的问题了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

