XCODE / IOS - 通过UIDocumentInteractionController

时间:2018-02-02 23:12:26

标签: ios swift share whatsapp uidocumentinteractioncontroller

我没有成功通过“UIDocumentInteractionController”分享任何东西,因为我几乎所有的教程和在线帮助都希望找到解决方案:

这是我使用的代码:

    let fileName = "banner_1"
    let filePath = Bundle.main.path(forResource: fileName, ofType: "jpg")!
    let urlData = URL.init(fileURLWithPath: filePath)
    let nsData = NSData(contentsOf: urlData)

    let newFileName = "banner_1.jpg"
    let newFilePath = "\(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])/\(newFileName)"
    nsData?.write(toFile: newFilePath, atomically: true)
    let newUrlData = URL.init(fileURLWithPath: newFilePath)

    documentController?.url = urlData // or newUrlData
    documentController?.uti = "net.whatsapp.image"
    documentController?.presentOpenInMenu(from: CGRect.zero, in: self.view, animated: true)

每次我按whatsapp或messenger共享菜单的一个磁贴,没有任何反应,我有这个错误日志:

  

2018-02-02 19:56:31.293849-0300 myapp [748:116227] [core] SLComposeViewController initWithExtension:{id = net.whatsapp.WhatsApp.ShareExtension} requestedServiceType:(null)

     

2018-02-02 19:56:31.296021-0300 myapp [748:116227] [core] SLComposeViewController addExtensionItem: - userInfo:{       NSExtensionItemAttachmentsKey =(           “{types =(\ n \”public.jpeg \“,\ n \”public.file-url \“\ n)}”       );   }

     

2018-02-02 19:56:31.883007-0300 myapp [748:116227] [核心] viewWillAppear

     

2018-02-02 19:56:31.883240-0300 myapp [748:116227] [core] SLComposeViewController包括1个显式NSExtensionItems

     

2018-02-02 19:56:31.883311-0300 myapp [748:116227] [core] SLComposeViewController即将使用1 NSExtensionItems数组实例化远程视图控制器

     

2018-02-02 19:56:31.886583-0300 myapp [748:116227] [core] viewDidAppear

     

2018-02-02 19:56:31.989725-0300 myapp [748:116362] [ops] Hub连接错误错误Domain = NSCocoaErrorDomain Code = 4097“连接到名为net.whatsapp.WhatsApp.ShareExtension的服务”UserInfo = { NSDebugDescription =与名为net.whatsapp.WhatsApp.ShareExtension}的服务的连接

     

2018-02-02 19:56:31.991895-0300 myapp [748:116227] [core] SLComposeViewController完成实例化远程视图控制器(null)错误Error Domain = NSCocoaErrorDomain Code = 4097“连接到名为net.whatsapp的服务。 WhatsApp.ShareExtension“UserInfo = {NSDebugDescription =连接服务名为net.whatsapp.WhatsApp.ShareExtension}扩展请求标识符(null)

     

2018-02-02 19:56:31.992325-0300 myapp [748:116227] [core]主机:无法加载远程视图控制器并出现错误:错误Domain = NSCocoaErrorDomain Code = 4097“连接到名为net.whatsapp的服务.WhatsApp.ShareExtension“UserInfo = {NSDebugDescription =连接服务名为net.whatsapp.WhatsApp.ShareExtension}

     

2018-02-02 19:56:31.992433-0300 myapp [748:116227] [核心]表格未呈现,称过早完成

     

2018-02-02 19:56:31.992479-0300 myapp [748:116227] [core] SLComposeViewController completeWithResult:0

     

2018-02-02 19:56:31.995770-0300 myapp [748:116227] [core] SLComposeViewController跳过显式解除因为isBeingDismissed已经是1   克

     

2018-02-02 19:56:32.001500-0300 myapp [748:116227] [core] SLComposeViewController dealloc

我在plist文件中添加了“LSApplicationQueriesSchemes”和“whatsapp”。

我尝试使用UIDocumentInteractionControllerDelegate来查找是否有任何奇怪的事件,但没有帮助很多。

如果你有任何adea? 谢谢,安托万。

1 个答案:

答案 0 :(得分:0)

Here is working code through that you can share your image to whatsapp, All you need to do is just add LSApplicationQueriesSchemes whatsapp into your plist file for WhatsApp sharing enable.

Swift 4

func shareOnWhatsUp() {

    if UIApplication.shared.canOpenURL(URL(string: "whatsapp://app")!) {
        var documentInteractionController: UIDocumentInteractionController = UIDocumentInteractionController.init()
        let iconImage = UIImage(named: "IMG_1.jpg")
        let pathURL =   URL.init(fileURLWithPath: NSHomeDirectory() + "/Documents/whatsAppTmp.wai")

        do {
            try UIImageJPEGRepresentation(iconImage!, 1.0)?.write(to: pathURL)
        } catch {
            print(error.localizedDescription)
        }
        documentInteractionController!.url = pathURL
        documentInteractionController!.uti = "net.whatsapp.image"
        documentInteractionController!.delegate = self
        documentInteractionController!.presentOpenInMenu(from: CGRect(x: 0, y: 0, width: 0, height: 0), in: self.view, animated: true)
    }
    else {
        print("whatsup not installed")
    }
}