5

我的设备:

  • iPad Mini(最新),iOS 8 dp5。
  • Macbook Air,优胜美地 dp5。

我在上述两个设备之间进行了切换。Safari、邮件、消息、日历等都可以毫无问题地进行切换。

我什至可以在 Air 上的网站和 iPad 上的本地应用程序之间切换。

我还不能从 iPad 上的本机应用程序转到 Air 上 Safari 中的网站。

对于在我的本机应用程序中加载的第一个视图控制器,我有这个:

- (void)viewDidLoad

{
    [super viewDidLoad];

    NSUserActivity *webHandoff = [[NSUserActivity alloc] initWithActivityType:@"com.myApp.iphone.staging.webbrowsing"];

    webHandoff.webpageURL = [NSURL URLWithString:@"http://staging.myApp.com"];

    [webHandoff becomeCurrent];
}

在我的应用程序的 Info.plist 文件中,我有这个:

<key>NSUserActivityTypes</key>
<array>
      <string>com.myApp.iphone.staging.webbrowsing</string>
</array>

我是否遗漏了什么或者我的某些配置不正确?

谢谢你的帮助!

4

1 回答 1

16

我对代码进行了两项重大更改:

1) 在 vi​​ewDidAppear/disappear 中配置/销毁和设置 NSUserActivity 对象,而不是 viewDidLoad:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    NSUserActivity *webHandoff = [[NSUserActivity alloc] initWithActivityType:@"com.myApp.iphone.staging.web-browsing"];
    webHandoff.webpageURL = self.handoffWebpageURL;
    [self setUserActivity:webHandoff];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    [self.userActivity invalidate];
}

2)由于 UIViewController 是 UIResponder 的子类,并且 UIResponders 有一个 userActivity 属性,而不是调用[webHandoff becomeCurrent]我只是调用[self setUserActivity:webHandoff];

不确定为什么将其移出 viewDidLoad 会产生任何影响,也不确定为什么需要将其设置为 viewController 的 NSUserActivity 实例,但上述更改为我在整个应用程序中提供了坚实可靠的切换体验。

于 2014-08-05T02:20:11.087 回答