![](/img/trans.png)
[英]Why does my app not display the alert to ask to access user's location?
[英]Why my iOS app does not ask user permission to access camera?
我開發了 iOS 應用程序,它使用了相機。 AVCaptureDeviceInput 用於連接到相機。 我檢查了授權狀態為
- (void)checkDeviceAuthorizationStatus
{
NSString *mediaType = AVMediaTypeVideo;
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
if (granted)
{
//Granted access to mediaType
[self setDeviceAuthorized:YES];
}
else
{
//Not granted access to mediaType
dispatch_async(dispatch_get_main_queue(), ^{
[[[UIAlertView alloc] initWithTitle:@"AVCam!"
message:@"AVCam doesn't have permission to use Camera, please change privacy settings"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
[self setDeviceAuthorized:NO];
});
}
}];
}
當我啟動應用程序時,為什么它不要求用戶訪問相機的權限? 因此該應用程序不會出現在設置/隱私/相機中以手動允許訪問相機。 然后顯示此錯誤"AVCam doesn't have permission to use Camera, please change privacy settings"
並且應用程序無法使用相機。
編輯:這意味着該應用程序不得在未經用戶許可的情況下訪問相機。 不僅相機,相機膠卷也有同樣的問題。
所有這些事情都是在我在設置/重置/重置所有設置中重置設置后發生的。 在此之前,該應用程序運行良好。
現在問題解決了。 我需要一步一步回溯,花了我很長時間才解決問題。 有些人建議包含 NSCamerausageDescription Key。 實際上,iOS 7 及更高版本的設備是必需的。 我包含了密鑰,但仍然沒有詢問用戶權限。 最后我在 Info.plist 找到了問題。 有一些額外的行,我刪除了三行。 不確定它們與我的問題有何關系。 我刪除的那些是
(1)獲取信息字符串
(2)Bundle 顯示名稱
(3)應用類別
在info.plist中刪除這三行后。 然后應用程序詢問用戶許可。 關鍵是您可能需要檢查您的 Info.plist 是否存在此類問題。
您需要將您的應用程序名稱放在 info.plist 的“Bundle display name”中
看看上面矛盾的解決方案 - 刪除和添加包顯示名稱 - 讓我想到了這個錯誤的原因。 我猜這個(Apple)錯誤只出現在安裝了相同應用程序的設備上,當時它沒有相機權限(沒有相機功能的舊版本或只是糟糕的 testflight 版本)。 因此,如果您只是從頭開始刪除和安裝,則被竊聽的應用程序權限將變得沒問題。 說到不卸載現有應用程序的解決方法,如果您更改 plist 中的包描述(刪除或添加),那么 iOS 將使用新的 plist,其權限超過已安裝的權限,正如我們所期望的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.