ios - 防止 OneSignal 库在运行时加载两次
问题描述
我正在尝试通过 cocoapods 将 OneSignal sdk 添加到我的项目中,然后使用 NotificationServiceExtension 实现推送通知模块。我的问题是,当我运行我的项目时,我收到了这个警告,Already swizzled UIApplication.setDelegate。确保 OneSignal 库没有两次加载到运行时!然后我无法订阅 OneSignal 服务器。我确定问题出在我的 pod 文件配置中,因为当我从AppKit中删除 OneSignal pod 时,警告消失了,我可以订阅通知服务器,但我不能从那里删除这个 pod,因为我以后需要它. 这是我的 pod 文件
# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'
def common_pods
use_frameworks!
pod 'RxSwift', '~> 5'
pod 'RxCocoa', '~> 5'
end
def shared_one_signal_pod
use_frameworks!
pod 'OneSignal', '2.12.6'
end
use_frameworks!
target 'App' do
common_pods
shared_one_signal_pod
target 'AppTestTests' do
#inherit! :search_paths
# Pods for testing
end
target 'AppOneSignalNotificationServiceExtension' do
inherit! :search_paths
end
end
target 'App_iOS' do
common_pods
end
target 'AppKit' do
common_pods
pod 'Socket.IO-Client-Swift', '~> 15.2.0'
shared_one_signal_pod
end
target 'AppUIKit' do
common_pods
end
如您所见,我的项目被分解为 3 个本地框架(iOS、Kit、UIKit)和我的 App 目标。那么有没有办法让该 pod 在运行时加载一次?
解决方案
推荐阅读
- c++ - 为什么在调用 int main 和在使用继承 C++ 的类中值不同?
- twilio - 使用 Twillio 和 Zapier 进行出站电话验证
- android - 带有设备文件资源管理器的 Android Studio 3.1.2 中出现“找不到 ADB”错误
- css - 强制在 Bootstrap 4 中显示无效反馈
- visual-studio-code - 在需要时防止 autoClosingTags 或定义结束标记位置?
- c++ - 使用共享库版本支持不同 ABI 的最佳实践是什么?
- c# - C#服务没有将文件移动到正确的文件夹
- git - 如何将 github 存储库回滚到以前的提交?
- java - 具体来说,如何在 Android Studio 中运行“hipster”纯 Java 程序?
- scala - 在 Apache Spark + 大数据中使用 GraphX 进行图形处理