没有这样的模块 'OneSignal'

No such module 'OneSignal'

我正在尝试将 OneSignal SDK in Xcode 7.2.1 与 CocoaPods 1.0.0.beta.2 和 use_frameworks! 指令集成。 当我尝试在 AppDelegate.swift 中导入框架时,我得到

No such module 'OneSignal'.

我还有 Cocoapods 中包含的其他框架,它们可以正常工作(例如:Fabric)

我设法在另一个项目中安装了带有 cocoapods 的 OneSignal SDK,但没有 use_frameworks! 指令。我用了桥接头。

Pods 写在 Swift 可以用 use_frameworks! 导入,如果你不这样做 CocoaPods 会抱怨并尝试导入 pods 在 Swift 代码中。

尽管 pods 未写入 Swift,但需要使用桥接头。

参考 OneSignal pod,入门指南指示使用 Swift 的应用程序包含桥接头以便使用 pod。 OneSignal: Getting Started Guide

另一件事是

If the framework header is already included in the bridging header file then you don't have to import it in the Swift source file.

编辑

OneSignal cocoapod 是用 Swift 写的吗?我需要 use_frameworks! 还是桥接 header?什么在 Xcode 8.2.1、Swift 3 和 OneSignal (1.11.3) 中有效?

  1. OneSignal: Getting Started Guide 实际上在 Swift 3
  2. 中不起作用
  3. import OneSignal 添加到 AppDelegate.swift 实际上对我不起作用
    (没有自动完成和编译错误)
  4. use_frameworks! 在这种特定情况下没有帮助

Xcode 8.2.1,Swift 3,OneSignal 1.11.3

  • 使用这个桥接 header (†):

    #import "OneSignal/OneSignal.h"
    
  • 在 App Delegate 中:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions
                     launchOptions: [UIApplicationLaunchOptionsKey: Any]?)
                     -> Bool {
        _ = OneSignal.init(launchOptions: launchOptions,
                           appId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
        ...
    }
    

  • (†) 添加正确设置桥接 header 的简单方法是简单地添加一个新的 Objective-C 源文件到项目并按照对话框进行操作。

在安装 pods 之后立即构建(CMD+B)项目,然后再开始使用 pod 帮助。在开始使用 pods 之前,我们还必须清除所有错误。

如果您在开始开发 OneSignal 之前已经有 pod 文件,则需要为 OneSignalNotificationServiceExtension 添加新目标。

    target 'OneSignalNotificationServiceExtension' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for OneSignalNotificationServiceExtension
  pod 'OneSignal', '>= 2.5.2', '< 3.0'

  end

将上述代码添加到 podfile 后。你必须再 "pod install" 一次。

您需要键入这些命令。它已为我修复:

$ pod deintegrate
$ pod install

我的播客文件:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'Your_Project_Name' do
  # Comment the next line if you don't want to use dynamic frameworks

  # Pods for Das Gedenken
pod 'OneSignal'


end

target 'OneSignalNotificationServiceExtension' do
  #only copy below line
  pod 'OneSignal'
end