Передача не работает с родного приложения на сайт

Мои устройства:

  • 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, но приведенные выше изменения дают мне надежную и надежную передачу обслуживания во всем моем приложении.

Другие вопросы по тегам