Как сделать скриншот, когда мой iPhone получает звонок - PullRequest
0 голосов
/ 19 января 2019

Я хочу управлять действиями входящих звонков, чтобы сделать скриншот.Снимок экрана сделан, но нет экрана моего входящего вызова.Как мне этого добиться?

class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var callObserver: CXCallObserver!
var photoDelegate: UIImageView!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    callObserver = CXCallObserver()
    callObserver.setDelegate(self, queue: nil) // nil queue means main thread
    return true
}
}

И CXCallObserverDelegate

extension AppDelegate: CXCallObserverDelegate {
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
    if call.hasEnded == true {

    }
    if call.isOutgoing == true && call.hasConnected == false {      
    }
    if call.isOutgoing == false && call.hasConnected == false && call.hasEnded == false {
        print("Incoming \(call.uuid.description)")
 imagine = UIImageView(image: UIApplication.shared.screenShot!)
    }

    if call.hasConnected == true && call.hasEnded == false {

  }
}
}

Снимок экрана с экраном

extension UIApplication {

var screenShot: UIImage?  {

    if let rootViewController = keyWindow?.rootViewController {
        let scale = UIScreen.main.scale
        let bounds = rootViewController.view.bounds
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, scale);
        if let _ = UIGraphicsGetCurrentContext() {
            rootViewController.view.drawHierarchy(in: bounds, afterScreenUpdates: true)
            let screenshot = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return screenshot
        }
    }
    return nil
}
}

1 Ответ

0 голосов
/ 19 января 2019

CallKit UI, который отображается, когда пользователь получает вызов, является частью iOS, а не вашего приложения, после ответа на вызов приложение получает фокус, и вы можете делать снимки экрана.

Replaykit может быть альтернативным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...