首页 > 解决方案 > 防止 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 在运行时加载一次?

标签: ioscocoapodsonesignal

解决方案


推荐阅读