更改 cordova 原生音频插件



我正在尝试更改Cordova插件,以便我可以从javascript更改iOS音乐类别,但是我在Cordova构建日志中收到警告

知道我的代码出了什么问题吗?第一个参数有效,但第二个参数无效

audio.setCategory('AVAudioSessionCategoryAmbient', 
'AVAudioSessionCategoryOptionMixWithOthers')

和 iOS 部分:

- (void) setCategory:(CDVInvokedUrlCommand *)command {
NSArray* arguments = command.arguments;
NSString *category = [arguments objectAtIndex:0];
NSString *options = [arguments objectAtIndex:1];
[[AVAudioSession sharedInstance] setCategory:category withOptions:options error:nil];

[self.commandDelegate sendPluginResult:[CDVPluginResult resultWithStatus:CDVCommandStatus_OK] callbackId:command.callbackId];
}

我收到以下警告

/

project/koeriersapp/Plugins/cordova-plugin-nativeaudio/NativeAudio.m:67:71: 警告:指向整数转换的指针不兼容,发送"NSString *__strong' 到类型为 'AVAudioSessionCategoryOptions' 的参数 (又名 'enum AVAudioSessionCategoryOptions') [-Wint-conversion] [[AVAudioSession sharedInstance] setCategory:category withOptions:options error:nil]; ^~~~~~~~~~~~~~ 在模块"AVFoundation"中导入自/project/koeriersapp/Plugins/cordova-plugin-nativeaudio/NativeAudio.h:11:/Applications/Xcode.app/Content/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.1.sdk/System/Library/Frameworks/AVFoundation.framework/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h:364:85: 注意:在此处将参数传递给参数"选项" - (BOOL)setCategory:(NSString *)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0); ^

您不能optionsNSString传递给:

[[AVAudioSession sharedInstance] setCategory:category withOptions:options error:nil]; 

它应该是AVAudioSessionCategoryOptions枚举。

要解决它,您可以将匹配器编写为:

AVAudioSessionCategoryOptions optionsOrig = 0;
if([options isEqualToString: @"AVAudioSessionCategoryOptionMixWithOthers"]){
optionsOrig = AVAudioSessionCategoryOptionMixWithOthers;
}
[[AVAudioSession sharedInstance] setCategory: category withOptions:optionsOrig error:nil];

裁判:

- (BOOL)setCategory:(NSString *)category 
withOptions:(AVAudioSessionCategoryOptions)options 
error:(NSError * _Nullable *)outError;

在此处查看文档

最新更新