簡體   English   中英

為什么我的 iOS 應用程序不要求用戶訪問相機的權限?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM