没有这样的模块' OneSignal'

时间:2016-02-05 08:17:37

标签: ios cocoapods onesignal

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

  

没有这样的模块' OneSignal'。

我还有Cocoapods提供的其他框架没有问题(例如:Fabric)

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

6 个答案:

答案 0 :(得分:7)

用Swift编写的Pod可以用use_frameworks!导入,如果你不这样做,CocoaPods会抱怨并尝试用Swift代码导入pod。

虽然任何没有用Swift编写的pod都需要使用桥接头。

引用OneSignal窗格,入门指南指示使用Swift的应用程序包含桥接标头以便使用该窗格。 OneSignal: Getting Started Guide

答案 1 :(得分:1)

另一件值得提及的是Getting error "No such module" using Xcode, but the framework is there

  

如果框架标头已包含在桥接头文件中,那么您不必在Swift源文件中导入它。

答案 2 :(得分:1)

修改

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

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

    • 使用此桥接头(†)

      #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")
          ...
      }
      
    • (†) 添加正确设置的桥接头的简单方法是简单地将新的Objective-C源文件添加到项目中并按照对话框进行操作。 Configure bridging headers

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果在开始开发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安装”。

答案 5 :(得分:0)

您需要键入以下命令。它已为我修复:

$ pod deintegrate
$ pod install

我的Podfile:

# 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