Делайте снимки экрана с помощью приложения для клавиатуры или приложения iMessage.

Можно ли программно делать снимки экрана из приложения клавиатуры или приложения iMessage? Если да, то как?

Изменить: чтобы уточнить, я хотел бы сделать скриншоты всего экрана (т.е. открытого в данный момент приложения) из приложения клавиатуры/iMessage.


person Richard    schedule 07.04.2017    source источник
comment
Хотите скриншоты клавиатуры/приложения сообщений? Или вы пытаетесь сделать скриншот других приложений (приложение «Сообщения» или приложение с открытой клавиатурой)?   -  person nathangitter    schedule 08.04.2017
comment
Скриншоты других приложений при открытой клавиатуре.   -  person Richard    schedule 09.04.2017


Ответы (2)


Поскольку это действие нанесло бы ущерб конфиденциальности клиентов, использующих сторонние клавиатуры или приложения iMessage, собирать скриншоты личных данных таким образом по очевидным причинам невозможно.

В вопросе конкретно указывается метод выполнения потенциально мошеннических действий, направленных против Руководство по проверке App Store, раздел 5.1.1 Сбор и хранение данных:

(iii) Разработчики, которые используют свои приложения для тайного получения паролей или других личных данных, будут исключены из Программы для разработчиков.

Этот вопрос был отмечен соответствующим образом.

person Tzar    schedule 16.04.2017
comment
Чтобы уточнить, я предполагал, что это произойдет только по запросу пользователя, например. нажав кнопку на клавиатуре. - person Richard; 19.04.2017
comment
Пользователи уже могут делать скриншоты с помощью аппаратных комбинаций кнопок, если им это нужно. - person Tzar; 19.04.2017
comment
Верно, но многократно прокручивать и делать снимок экрана неудобно, если пользователь хочет захватить больше, чем может поместиться на экране за раз. Я хотел бы реализовать такую ​​функциональность, чтобы пользователь мог нажать одну кнопку, а скриншоты или вся прокручиваемая область автоматически делались и сшивались вместе. - person Richard; 20.04.2017
comment
Это отличается от того, что вы изначально спрашивали. Это возможно. Опубликуйте новый, перефразированный вопрос об этом, и я постараюсь ответить. - person Tzar; 20.04.2017
comment
Спасибо, @boletzar, я разместил новый вопрос по адресу stackoverflow.com/questions/43615790/ - person Richard; 25.04.2017

Используйте этот код для создания снимка экрана с помощью UIToolBar

extension UIViewController: UITextFieldDelegate{
    func addToolBar(textField: UITextField){
        var toolBar = UIToolbar()
        toolBar.barStyle = UIBarStyle.Default
        toolBar.translucent = true
        toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
        var screenshotButton = UIBarButtonItem(title: "Screenshot", style: UIBarButtonItemStyle.Done, target: self, action: "donePressed")
        var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelPressed")
        var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
        toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
        toolBar.userInteractionEnabled = true
        toolBar.sizeToFit()

        textField.delegate = self
        textField.inputAccessoryView = toolBar
    }
    func screenshotButton(){
            func captureScreen() -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIScreen.main.scale)
        view.layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
    }
    func cancelPressed(){
        view.endEditing(true) // or do something
    }
}

Хотя мне все еще нужно вызвать приведенный ниже код во всех моих текстовых полях.

override func viewDidLoad() {
    super.viewDidLoad()
    addToolBar(addressField)
}
person Satish Babariya    schedule 08.04.2017
comment
Вы можете уточнить? Что такое UIToolbar? Будет ли это делать скриншот всего экрана с клавиатуры или из приложения iMessage? - person Richard; 10.04.2017
comment
используйте это для справки на панели инструментов developer.apple.com/reference/uikit/uitoolbar - person Satish Babariya; 10.04.2017
comment
Спасибо за ссылку. Однако я все еще не уверен, решает ли это мою проблему. Является ли UIToolbar компонентом, который можно добавить в приложение iMessage или приложение клавиатуры? Если да, то делает ли опубликованный вами код снимок экрана всего экрана или только приложения iMessage/клавиатуры? - person Richard; 10.04.2017
comment
Это для снятия скриншотов внутри приложения, но вопрос в другом. - person Satheesh; 17.04.2017