将iOS模块从Pod导入到nativescript插件

时间:2018-12-18 21:30:47

标签: javascript ios swift typescript nativescript

目前,我已经开始使用NativeScript和Typescript进入开发领域,但是现在我遇到了一个困扰我很多的问题。

我正在'nativescript-plugin-seed'的帮助下开发一个插件,该插件利用pod(AudioKit)进行音频转换。我的问题是,我应该将“ AudioKit”模块导入插件以利用其功能,然后在应用程序中使用它们的方式

我在Swift中包含了我在Xcode项目中测试的音频转换代码,以验证其正确操作,还包括了模板,在该模板中应该导入模块以生成将与我的应用程序通信的方法。

快捷代码

import UIKit
import AudioKit

class ViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()        
    let fileManager = FileManager.default
       do {
           let origin = Bundle.main.url(forResource: "IOS", withExtension: "mp4")
           let documentDirectory = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor:nil, create:false)
           let destination = documentDirectory.appendingPathComponent("test.wav")
           var options = AKConverter.Options();
           options.format = "wav";
           options.sampleRate = 48000;
           options.bitDepth = 16;
           let converter = AKConverter(inputURL: origin!, outputURL: destination, options: options)
        converter.start(completionHandler: { error in
            if(error != nil){
                print("ERROR")
            }else{
                print("CORRECT")
            }
        })
    }
    catch {
        print(error)
    }
}

}

插件代码(my-plugin.ios.ts)

import { Common } from './audio-converter.common';
//I suppose the module should be declared here

export class AudioConverter extends Common {
// and used here
}

**已编辑

我已经使用了命令HERE,但是从未创建过键入文件。用与我阅读相同的方式,如果Pod是用Swift编写的,则必须配置Pod文件和build.xcconfig,但是它还是无法正常工作。我将评论正在执行的步骤,只是为了验证我没有做错什么。

  1. 使用git clone创建插件 https://github.com/NativeScript/nativescript-plugin-seed并配置插件的名称.....
  2. 添加Podfile

     pod 'AudioKit', '~> 4.0'
     post_install do |installer|
         installer.pods_project.targets.each do |target|
           target.build_configurations.each do |config|
             config.build_settings['SWIFT_SWIFT3_OBJC_INFERENCE'] = 'On'
             config.build_settings['SWIFT_VERSION'] = '4.0'
           end
         end
       end
    
  3. 将标志ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES

  4. 添加到build.xcconfig中
  5. 执行这些命令以在/ src中创建键入文件(-EDITED为了创建键入文件,这些命令必须在/ demo中使用)

      TNS_DEBUG_METADATA_PATH="$(pwd)/metadata" tns build ios [--for-device] [--release]
      TNS_TYPESCRIPT_DECLARATIONS_PATH="$(pwd)/typings" tns build ios [--for-device] [--release]
    
  6. 在这一点上,我认为必须在键入地毯时获取文件,但我没有得到它们

1 个答案:

答案 0 :(得分:1)

一旦安装了POD,库中所有的Objective C公开的api都将可供您访问。如果您想将TypeScript Intellisense用于库,则必须首先生成类型。

Here,您会找到有关生成类型的文档。生成后,您必须将它们导入您的reference.d.ts

如果您还不熟悉将目标C编组为JS / TS,那么您可能想启动here