Передача изображения непосредственно в WhatsApp не работает на iOS - PullRequest
0 голосов
/ 17 января 2020

Я просмотрел несколько вопросов SO (например, , этот , или , этот ), чтобы найти способ поделиться изображением непосредственно с WhatsApp. Кажется, что все они следуют инструкциям официальной документации , и поэтому я получил такой метод:

extension WhatsAppInviter {
    func shareImageViaWhatsapp(image: UIImage, onView: UIView) {
        let urlWhats = "whatsapp://app"
        if let urlString = urlWhats.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) {
            if let whatsappURL = URL(string: urlString) {
                if UIApplication.shared.canOpenURL(whatsappURL as URL) {
                    guard let imageData = image.pngData() else { debugPrint("Cannot convert image to data!")
                        return }

                    let tempFile = URL(fileURLWithPath: NSHomeDirectory()).appendingPathComponent("Documents/image.wai")
                    do {
                        try imageData.write(to: tempFile, options: .atomic)
                        documentInteractionController = UIDocumentInteractionController(url: tempFile)
                        documentInteractionController?.uti = "net.whatsapp.image"
                        documentInteractionController?.presentOpenInMenu(from: CGRect.zero, in: onView, animated: true)

                    } catch {
                        UIAlertController.presentAlertWith(title: "Error", message: "There was an error while processing.", actions: [UIAlertAction(title: "OK", style: .default, handler: nil)])
                        return
                    }

                } else {
                    UIAlertController.presentAlertWith(title: "Error", message: "Cannot open Whatsapp, make sure Whatsapp is installed on your device.", actions: [UIAlertAction(title: "OK", style: .default, handler: nil)])
                }
            }
        }
    }
}

В официальной документации прямо говорится:

В качестве альтернативы, если вы хотите, чтобы в списке приложений отображался только WhatsApp (вместо WhatsApp и любых других общедоступных / * - соответствующих приложений), вы можете указать файл одного из вышеупомянутых типов, сохраненный с расширением, которое является эксклюзивным для WhatsApp:

images - «.wai» типа net .whatsapp.image

videos - «.wam» типа net .whatsapp.mov ie

аудиофайлы - «.waa» типа net .whatsapp.audio

При запуске WhatsApp немедленно предоставляет пользователю экран выбора контакта / группы. Носитель будет автоматически отправлен выбранному контакту / группе.

Однако при выполнении этого кода я продолжаю получать контроллер взаимодействия с документами, как вы можете видеть здесь:

Options menu

Я что-то не так делаю или что-то изменилось с iOS 13? Как я могу пропустить это меню или хотя бы показать там только WhatsApp?

...