2013-09-23 18 views
13

Vì bản cập nhật iOS 7 đã có một số thay đổi với các ứng dụng ghi âm. Tôi có một ứng dụng được sử dụng để làm việc với iOS 5 và 6, nhưng khi tôi cố chạy ứng dụng trên iOS 7 - bản ghi âm không phản hồi.requestRecordPermission không có gì

Tôi đã kiểm tra Internet và thấy có một phương pháp mới cần được gọi. Tôi cố gắng để đặt mã này trong viewDidAppear:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]) 
    { 
     [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { 
      NSLog(@"permission : %d", granted); 
     }]; 
    } 
} 

'cấp' luôn 1 là mặc dù tôi đã không thừa nhận bất kì sự cho phép cũng không nhìn thấy bất kỳ yêu cầu popup.

Btw Tôi đang cố xử lý việc này bằng xcode 4.6.3. Tôi đã tạo một danh mục cho AVAudioSession với phương thức requestRecordPermission, vì phương thức này chỉ có sẵn trong iOS 7.

Cảm ơn.

+0

Tôi nghĩ câu trả lời của Yogesh Maheshwari chính xác hơn và nên được đặt làm câu trả lời. –

Trả lời

25

Tôi đã gặp sự cố tương tự trong khi thử nghiệm trên trình mô phỏng iOS7, có vẻ như requestRecordPermission không hoạt động trong trình mô phỏng và "được cấp" luôn được trả về CÓ. Bạn phải kiểm tra nó trên một thiết bị thực.

Nếu bạn đã thử nghiệm nó một lần trên thiết bị và trả lời cho phép bật lên thì bật lên quyền sẽ không xuất hiện trở lại cho đến khi đặt lại vị trí & bảo mật được thực hiện.

Để thiết lập lại Location & bảo mật theo các bước sau

Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked. 
10

Sau khi bạn đã cấp quyền Âm thanh cho ứng dụng. Ứng dụng của bạn sẽ không hiển thị lại lời nhắc quyền.

Nếu bạn muốn kiểm tra, hãy thay đổi ID gói của ứng dụng & thử.

2

cùng dành cho iOS 8 Simulator. AVAudioSession.sharedInstance().requestRecordPermission luôn trả true.On Mặt khác khi bạn gọi

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 

để mở thiết lập của ứng dụng của bạn trên mô phỏng, micro không bao giờ được liệt kê there.That sẽ cần phải được thử nghiệm trên một thiết bị thực sự.

1

Thêm quyền riêng tư - Sử dụng micrô Mô tả trong thông tin của bạn plist để cấp quyền truy cập cho ứng dụng để yêu cầu quyền. Điều này đã gây ra cho tôi Thread13: báo hiệu lỗi SIGABRT. Sau khi thực hiện xong, lỗi được giải quyết tự động.

+0

Thử hiển thị mã cho đề xuất của bạn, để cung cấp câu trả lời có chất lượng tốt hơn. – yivi

Các vấn đề liên quan