2016-05-24 10 views
0
hängen

Ich entwickle eine iOS-App, mit der Benutzer URLs speichern können, ähnlich wie die Pocket App. In der App habe ich eine Freigabeerweiterung, die im Grunde nur die URL in einem NSUserDefaults basierend auf der App-Gruppe speichern. Aus irgendeinem Grund führt die Freigabeerweiterung dazu, dass die mobile Safari nach Auswahl der Freigabeerweiterung nicht mehr reagiert. Der Code für die Freigabeerweiterung ist so einfach, ich frage mich, was ihn verursacht haben könnte. Beim Debuggen in Xcode wird die Funktion in der Freigabeerweiterung anscheinend überhaupt nicht aufgerufen. Irgendwelche Hinweise? Dies läuft auf iOS 9.3.Share Erweiterung verursacht Safari in iPhone

Hier ist der Code:

// 
// ShareViewController.swift 
// intrafeedappShare 
// 
// Created by Dicky Johan on 5/21/16. 
// Copyright © 2016 Dicky Johan. All rights reserved. 
// 

import UIKit 
import Social 
import MobileCoreServices 

class ShareViewController: UIViewController { 

    var selectedURL: String? 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     let contentType = kUTTypeURL as String 

     guard let item = self.extensionContext?.inputItems.first as? NSExtensionItem else { 
       fatalError() 
     } 

     for attachment in item.attachments as! [NSItemProvider] { 
      if attachment.hasItemConformingToTypeIdentifier(contentType) { 
       attachment.loadItemForTypeIdentifier(kUTTypeURL as String, options: nil) { url, error in 
        if error == nil { 
         guard let url = url as? NSURL else { 
          self.extensionContext?.cancelRequestWithError(NSError(domain:"Url is empty",code:-1,userInfo: nil)) 
          return 
         } 
         self.selectedURL = url.absoluteString 

         let defaults = NSUserDefaults(suiteName: Constants.Settings.sharedAppGroup) 
         if let arrUrls = defaults!.objectForKey(Constants.Settings.sharedURLS) { 
          // append to the existing list 
          arrUrls.appendString(url.absoluteString) 

         } else { 
          let newArrUrl = [url.absoluteString] 

          defaults!.setObject(newArrUrl, forKey: Constants.Settings.sharedURLS) 
         } 
         defaults!.synchronize() 

         self.extensionContext?.completeRequestReturningItems(nil, completionHandler: nil) 


         let alert = UIAlertController(title: "Success", message: "Added url to intrafeed", preferredStyle: .Alert) 

         let action = UIAlertAction(title: "Done", style: .Default) { _ in 
          self.dismissViewControllerAnimated(true, completion: nil) 
         } 

         alert.addAction(action) 
         self.presentViewController(alert, animated: true, completion: nil) 

        } else { 
         self.extensionContext?.cancelRequestWithError(error) 

         let alert = UIAlertController(title: "Error", message: "Error loading url", preferredStyle: .Alert) 

         let action = UIAlertAction(title: "Error", style: .Cancel) { _ in 
          self.dismissViewControllerAnimated(true, completion: nil) 
         } 

         alert.addAction(action) 
         self.presentViewController(alert, animated: true, completion: nil) 
        } 


       } 
      } 
     } 


    } 


} 

Antwort

0

Ok, offenbar gab es einen Absturz in dem Code, so dass die Safari einfror. Beim Debuggen der Erweiterung in Xcode habe ich das Problem gefunden.