2016-05-24 3 views
0

Я разрабатываю приложение iOS, которое позволяет пользователю сохранять URL-адреса, похожие на Pocket app. В приложении у меня есть расширение общего доступа, которое в основном просто сохраняет URL-адрес в NSUserDefaults на основе группы приложений. По какой-то причине расширение домена заставляет мобильное сафари зависать (не реагируя) после выбора расширения общего доступа. Код для расширения домена настолько прост, мне интересно, что могло его вызвать. При отладке в Xcode функция в расширении share также не вызывается вообще. Любые подсказки? Это работает на iOS 9.3.Share extension заставляет сафари висеть в iphone

Вот код:

// 
// 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) 
        } 


       } 
      } 
     } 


    } 


} 

ответ

0

Хорошо, по-видимому, был сбой в коде, тем самым вызывая Safari замерзать. При отладке расширения в Xcode я нашел проблему.

Смежные вопросы