открыть файл .pkpass из кошелька с помощью общего расширения iOS - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь открыть файл .pkPass из кошелька с помощью общего ресурса, но он не открывается. В основном это возвращаемые данные, и я хочу URL. но если я пытаюсь открыть данные .pkpassfile в PKAddPassesViewController, он не открывается, он говорит, что Попытка представить, чье представление не находится в иерархии окон!.

ShareViewController

 override func didSelectPost() {      if let item = self.extensionContext?.inputItems[0] as? NSExtensionItem{
     print("Item \(item)")
     for ele in item.attachments!{
         print("item.attachments!======>>> \(ele as! NSItemProvider)")
         let itemProvider = ele as! NSItemProvider
         print(itemProvider)
         if itemProvider.hasItemConformingToTypeIdentifier("com.apple.pkpass"){
             imageType = "com.apple.pkpass"
         }
         if itemProvider.hasItemConformingToTypeIdentifier("com.apple.pkpass"){
              imageType = "com.apple.pkpass"
         }
         print("imageType :  \(imageType)")

         if itemProvider.hasItemConformingToTypeIdentifier(imageType){
             print("True")
            itemProvider.loadItem(forTypeIdentifier: imageType, options: nil, completionHandler: { (item, error) in
                print(item)
                 var imgData: Data!
                 if let url = item as? Data{
                     imgData = url
                        //try! Data(contentsOf: url)
                    self.openPass(withName: url)
                 }else {
                    print("sorry it does not work on others")
                }

             })
         }
     }

 }self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
             }

открыть файл PkPass Функции

 func openPass(withName passData: Data?) {
var error: Error? = nil
var newPass: PKPass? = nil
do {

    newPass = try PKPass(data: passData as! Data)
} catch {
}
if error != nil {
    UIAlertView(title: "Passes error", message: error!.localizedDescription, delegate: nil, cancelButtonTitle: "Ooops", otherButtonTitles: "").show()
    return
}
let addController = PKAddPassesViewController(pass: newPass!)
addController!.delegate = self
present(addController!, animated: true) 
}

говорит, что он не открывается. Попытка представить, чье представление не находится в иерархии окон!

В основном я хочу открыть файл .pkpass из приложения кошелька, используя расширение общего доступа в моем приложении. и затем пользователь может распечатать или поделиться паролем, используя мое приложение. Я хочу получить URL-адрес файла .pkpass, а затем сохранить его в userdefults, теперь проблема заключается в том, что этот файл .pkpass возвращает данные вместо URL, поэтому любой может помочь решить проблему или дать предложение относительно открытия файла .pkpass из приложения-кошелька с помощью общего ресурса. расширение спасибо

...