2017-09-14 29 views
1

我有一個應用程序,它擁有版權內容。我不希望用戶記錄它。如果他們開始錄製屏幕,我希望我的應用能夠抓住這一點。如果正在記錄屏幕,捕捉的功能是什麼?如何瞭解設備屏幕是否正在IOS中錄製11

我不想阻止,我想理解並接受它。

注意:某些答案表示解決方案包括AirPlay和鏡像。我想要的只是在應用程序之前或應用程序期間啓動屏幕錄製。我想讓用戶使用AirPlay和鏡像。

+2

的可能的複製[如何防止ios11屏幕記錄(https://stackoverflow.com/questions/45401959/how-to-prevent-screen-record-in- ios11) –

回答

1

您可以檢查屏幕是否被記錄與此

UIScreen.main.isCaptured 
+0

這不僅是屏幕截圖,還可以用airplay進行鏡像。所以不是確切的解決方案。 – birdcage

+0

請通過此鏈接https://developer.apple.com/documentation/uikit/uiscreen –

+0

我做到了。 「當此屬性的值爲true時,此屏幕的內容將被主動錄製,鏡像或通過AirPlay發送。」 – birdcage

0

您也可以檢測,如果用戶通過聆聽UIApplicationUserDidTakeScreenshotNotification採取截圖。

您可以使用下面way-

let main = OperationQueue.main 
NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationUserDidTakeScreenshot, 
    object: nil, 
    queue: mainQueue, 
    using: { notification in 
     // Warn user 
}) 

而且

UIScreen.main.isCaptured 

This也可用於檢測記錄。我沒有使用過,但大多數情況下你必須爲此做KVO。

+0

我不想檢測屏幕截圖。只想檢測屏幕的記錄。也不是播放或鏡像。 – birdcage

0

檢查畫面被記錄(對目標C)

把下面的代碼對你的應用程序代理,做完成發射,也變得活躍。

BOOL isCaptured = [[UIScreen mainScreen] isCaptured];

0

使用UIScreen.main.isCaptured獲取當前狀態。比你需要聽新的通知UIScreenCapturedDidChangeNotification。當錄製狀態改變時,您需要執行一些操作(例如停止播放等)。請記住,這只是iOS11 +。

代碼片段:

if (@available(iOS 11.0, *)) { 
    [[NSNotificationCenter defaultCenter] addObserver:self 
        selector:@selector(capturedChange) 
    name:UIScreenCapturedDidChangeNotification object:nil]; 
} 


- (void)capturedChange { 
    if (@available(iOS 11.0, *)) { 
    NSLog(@"Recording Status: %s", [UIScreen mainScreen].isCaptured ? "true" : "false"); 
     //do something 
    } 
} 
相關問題