2015-07-10 90 views
0

试图强制Handoff功能在iOS 9设备上使用iPhone 5和iPad Air,并且遇到与iOS9相关的问题 - 无法在iOS 8上查看,因为我没有设备这个系统。Handoff不适用于iOS 9设备

问题

  1. 我第一次打开设备上的应用程序时,在创建用户活动
  2. 在我的锁屏幕上看到的第二设备主屏幕,有与我的应用程序
  3. 一些活动
  4. 我正在打开此应用程序,application:continueUserActivity:restorationHandler:未在此设备上调用,因此我无法向用户显示第一台设备上显示的内容。

您可以在github上浏览整个项目:https://github.com/tomkowz/Quotes

实现细节

我已经更新目标的plist文件,并添加NSUserActivityTypes

<key>NSUserActivityTypes</key> 
<array> 
    <string>com.tomaszszulc.Quotes.quotesList</string> 
    <string>com.tomaszszulc.Quotes.browseQuote</string> 
</array> 

接下来,我已经创建枚举这些声明类型:

enum ActivityType: String { 
    case BrowseQuote = "com.tomaszszulc.Quotes.browseQuote" 
    case QuotesList = "com.tomaszszulc.Quotes.quotesList" 
} 

当用户是我开始NSUserActivity在主屏幕上。

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    quotes = Quote.findAll(CoreDataStack.sharedInstance().mainContext) 
    tableView.reloadData() 
    startUserActivity() 
} 

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    userActivity?.invalidate() 
} 

func startUserActivity() { 
    let activity = NSUserActivity(activityType: ActivityType.QuotesList.rawValue) 
    activity.title = "Viewing Quotes List" 
    userActivity = activity 
    userActivity?.becomeCurrent() 
} 

当用户转到所选项目的详细信息时,将激活第二种活动。这里是意见流量:

UINavigationController -> (root) QuotesListViewController -> (push) QuoteDetailsViewController 

下面是代码为QuoteDetailsViewController创建用户活动:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    userActivity = viewModel.userActivity // (viewModel) quote.userActivity 
    userActivity?.becomeCurrent() 
} 

override func viewDidDisappear(animated: Bool) { 
    super.viewDidDisappear(animated) 
    userActivity?.invalidate() 
} 

而且viewModel.userActivity电话:

extension Quote { 
    @available(iOS 8.0, *) 
    var userActivity: NSUserActivity { 
     let activity = NSUserActivity(activityType: ActivityType.BrowseQuote.rawValue) 
     activity.title = "Reading " + self.author + " quote" 
     activity.userInfo = [QuoteUserActivityKey.Identifier.rawValue: self.identifier] 
     // Core Spotlight support 
     if #available(iOS 9.0, *) { 
      activity.contentAttributeSet = self.searchableItemAttributeSet() 
      activity.keywords = Set([self.author]) 
      activity.eligibleForSearch = true 
      activity.eligibleForHandoff = true 
     } 

     return activity 
    } 
} 

预先感谢您!

+0

我已经提交了一个错误:http://www.openradar.me/radar?id=5534110390943744 –

回答

1

如果您收到这是看到了潜在切换的第二装置上的指示灯,那么唯一的“好”的理由application:continueUserActivity:restorationHandler:不叫的是:

这种方法不叫如果任应用程序:willFinishLaunchingWithOptions:或应用程序:didFinishLaunchingWithOptions:返回NO。

其他原因越区切换“不起作用”是如果设备没有登录到同一个iCloud帐户。但是你看到了指标,所以这不是你的情况。

相关问题