2015-06-02 4 views
3

Я хочу отправить URL-адрес из своего приложения, чтобы открыть его на переносном компьютере с помощью эстафетной передачи. Я добавил тип активности в приложение NSUserActivityTypes. Вот мой код до сих пор:iOS передача обслуживания с телефона на macbook safari/chrome

- (void)startHandoff { 
    NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@"com.me.browse"]; 
    activity.webpageURL = [NSURL URLWithString:_wakeUrl]; 
    [activity becomeCurrent]; 
} 

Это, кажется, не будет появляться на моем доке - это нужно специальное Activity Type, если вы хотите использовать сафари?

+0

Работает ли он с Mobile Safari? Если вы открываете Safari в своем телефоне, ваш Mac позволит вам возобновить работу с рабочего стола? Я прошу, чтобы мы могли корректно работать с телефоном на ваших устройствах. – Lefteris

+0

yep он отлично работает с chrome. – Halpo

+0

Дважды проверьте, что указанная активность в 'NSUserActivityTypes' соответствует той, которую вы указали в вашем методе' init'. – Lefteris

ответ

2

Ok после испытаний, кажется, что вы должны объявить NSUserActivity как переменную экземпляра:

Так это не работает:

@interface TestViewController() { 
} 

@end 

@implementation TestViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //init hand off 
    NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@"com.app.browse"]; 
    activity.webpageURL = [NSURL URLWithString:@"http://www.stackoverflow.com"]; 
    [activity becomeCurrent]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

Но это работает отлично:

@interface TestViewController() { 
     NSUserActivity *activity; 
} 

@end 

@implementation TestViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //init hand off 
    activity = [[NSUserActivity alloc] initWithActivityType:@"com.app.browse"]; 
    activity.webpageURL = [NSURL URLWithString:@"http://www.stackoverflow.com"]; 
    [activity becomeCurrent]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

Не знаю, почему, хотя я сейчас изучаю его.

+1

это правильно, хотя у меня были другие функции передачи обслуживания в приложении для приложения/просмотра, которые не работали - я только что перезапустил устройства и, похоже, исправил проблемы – Halpo

+0

, вы также можете объявить активность как свойство – Halpo

+0

Да, потому что по умолчанию , свойство readwrite будет поддерживаться переменной экземпляра, которая будет автоматически синтезироваться компилятором. – Lefteris

 Смежные вопросы

  • Нет связанных вопросов^_^