所以,我主要是用swift编写的,但似乎只有这样才能调用这个' AudioServicesPlaySystemSoundWithVibration'是在Objective-c ...开始时,我写的代码确实有效,我不确定是什么改变但是它给了我错误"隐含声明功能' AudioServicesPlaySystemSoundWithVibration'在C99"中无效现在而不仅仅是一个警告。相同的警告和错误标题,但现在这是一个我无法编译的错误。是的,我知道我使用的是私有API,但我不打算出售应用程序,所以我不在乎苹果的想法。我只需要定制振动。 vibrateMutate和vibrateSection这两个函数都是在单独的swift文件中调用的,我把这个函数放入了vibrate.h'在Bridging Header中,当我制作Objective-c文件时,我被哄骗了。这是我的代码:)
//vibrate.h FILE NAME
#ifndef vibrate_h
#define vibrate_h
@interface Vibrate : NSObject
+ (void)vibrateMutate;
+ (void)vibrateSectionChange;
@end
#endif /* vibrate_h */
// vibrate.m FILE NAME
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioServices.h>
#import <AudioToolbox/AudioToolbox.h>
#import "vibrate.h"
@implementation Vibrate
+ (void) vibrateMutate
{
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
NSMutableArray* arr = [NSMutableArray array ];
[arr addObject:[NSNumber numberWithBool:YES]];
[arr addObject:[NSNumber numberWithInt:50]];
[arr addObject:[NSNumber numberWithBool:NO]];
[arr addObject:[NSNumber numberWithInt:10]];
[dict setObject:arr forKey:@"VibePattern"];
[dict setObject:[NSNumber numberWithDouble:.25] forKey:@"Intensity"];
AudioServicesPlaySystemSoundWithVibration(4095,nil,dict); //ERROR
}
+ (void) vibrateSectionChange
{
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
NSMutableArray* arr = [NSMutableArray array ];
[arr addObject:[NSNumber numberWithBool:YES]];
[arr addObject:[NSNumber numberWithInt:150]];
[arr addObject:[NSNumber numberWithBool:NO]];
[arr addObject:[NSNumber numberWithInt:10]];
[dict setObject:arr forKey:@"VibePattern"];
[dict setObject:[NSNumber numberWithDouble:.75] forKey:@"Intensity"];
AudioServicesPlaySystemSoundWithVibration(4095,nil,dict);
}
@end
答案 0 :(得分:3)
如果您知道调用是正确的并且只想满足编译器,则可以在代码中给出明确的定义。我不知道私有函数的正确定义是什么,但如果你不关心精确的话,以下内容应该有用。
ScriptManager.RegisterStartupScript(this, GetType(), "ExistingTeamMember", "alert('This \\'Team Member\\' already exists.');", true);
答案 1 :(得分:2)
只是为了记录为@PhilipMills的好答案添加一些额外的价值,Apple Store绝不接受任何引用任何Apple的非公共符号或私有API的二进制文件。他们使用以下消息自动拒绝二进制文件:
非公开API使用:
- 该应用引用Justin Mobile中的非公共符号:_AudioServicesPlaySystemSoundWithVibration
如果源代码中的方法名称与私有Apple API匹配 如上所列,更改方法名称将有助于防止此应用程序 在未来的提交中被标记。另外,请注意一个 或者更多上述API可能位于静态库中 包含在您的应用中。如果是这样,他们必须被删除。