切换无法从原生应用程序到网站

dji*_*i33 5 ios8 handoff continuity nsuseractivity

我的设备:

  • iPad Mini(最新),iOS 8 dp5.
  • Macbook Air,Yosemite dp5.

我有两个上述设备之间的Handoff工作.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];
}
Run Code Online (Sandbox Code Playgroud)

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

<key>NSUserActivityTypes</key>
<array>
      <string>com.myApp.iphone.staging.webbrowsing</string>
</array>
Run Code Online (Sandbox Code Playgroud)

我错过了什么或者我的配置错误吗?

谢谢你的帮助!

dji*_*i33 16

我对我的代码做了两处重大更改:

1)配置/销毁并在viewDidAppear/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];
}
Run Code Online (Sandbox Code Playgroud)

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

不知道为什么将它从viewDidLoad中移出有任何影响,并且不确定为什么我需要将它设置为viewController的NSUserActivity实例,但上面的更改为我提供了整个应用程序中可靠和可靠的切换体验.