Передача не работает с родного приложения на сайт
Мои устройства:
- iPad Mini (последняя версия), iOS 8 dp5.
- Macbook Air, Yosemite dp5.
У меня есть Handoff, работающий между двумя вышеупомянутыми устройствами. Safari, Mail, Сообщения, Календарь и т. Д. Все переносят без проблем.
Я даже могу переключиться между моим веб-сайтом в эфире и моим родным приложением на iPad.
Что я пока не могу сделать, так это перейти от моего родного приложения на iPad к моему веб-сайту в 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>
Я что-то упустил или у меня что-то неправильно настроено?
Спасибо за любую помощь!
1 ответ
Я сделал два значительных изменения в своем коде:
1) настроить / уничтожить и установить объект NSUserActivity в viewDidAppear/ исчезнуть в отличие от 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 оказало какое-либо влияние, и не уверен, почему мне нужно установить его в экземпляр NSUserActivity для viewController, но приведенные выше изменения дают мне надежную и надежную передачу обслуживания во всем моем приложении.