我的设备:
我在上述两个设备之间进行了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];
}
在我的应用的Info.plist文件中,我有:
<key>NSUserActivityTypes</key>
<array>
<string>com.myApp.iphone.staging.webbrowsing</string>
</array>
我错过了什么或者我的配置不正确吗?
感谢您的帮助!
答案 0 :(得分:15)
我对代码做了两处重大修改:
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];
}
2)由于UIViewController是UIResponder的子类,而UIResponders具有userActivity属性,而不是调用[webHandoff becomeCurrent]
,我只是调用了[self setUserActivity:webHandoff];
不确定为什么将它从viewDidLoad中移出有任何影响,并且不确定为什么我需要将它设置为viewController的NSUserActivity实例,但上面的更改为我提供了一个稳定可靠的切换体验应用