我正在使用新的iOS7开发人员SDK,现在应用程序请求用户在第一次尝试录制时允许他从麦克风录制.
我的应用程序将在倒计时后记录,因此用户无法看到此请求.我用这段代码来检查requestRecordPermission
:
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
// Microphone enabled code
}
else {
// Microphone disabled code
}
}];
Run Code Online (Sandbox Code Playgroud)
但是在开始录制之前我怎么能自己触发请求呢?
One*_*rew 27
在新的iOS7中,它非常简单,试试这个:
if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission)])
{
[[AVAudioSession sharedInstance] requestRecordPermission];
}
Run Code Online (Sandbox Code Playgroud)
小智 11
这是最终的代码片段,对我有用.它支持Xcode 4和5,适用于iOS5 +.
#ifndef __IPHONE_7_0
typedef void (^PermissionBlock)(BOOL granted);
#endif
PermissionBlock permissionBlock = ^(BOOL granted) {
if (granted)
{
[self doActualRecording];
}
else
{
// Warn no access to microphone
}
};
// iOS7+
if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)])
{
[[AVAudioSession sharedInstance] performSelector:@selector(requestRecordPermission:)
withObject:permissionBlock];
}
else
{
[self doActualRecording];
}
Run Code Online (Sandbox Code Playgroud)
正如"One Man Crew"声称你可以使用requestRecordPermission.
需要注意的重要一点是,您必须检查requestRecordPermission是否已实现.原因是,如果您的应用程序可以在较旧的iOS版本(例如iOS 6.x)上运行,则在此调用后它将崩溃.为了防止这种情况,你必须检查这个选择器是否已经实现(无论如何这是一个好习惯).
代码应该是这样的:
if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]){
[[AVAudioSession sharedInstance] requestRecordPermission];
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,您的应用程序将支持新操作系统以及以前版本的操作系统.
每次Apple为新操作系统添加更多功能时,我都会使用这种方法(这样我可以很容易地支持旧版本).
归档时间: |
|
查看次数: |
34192 次 |
最近记录: |