Использование Handoff с Watchkit, чтобы вывести приложение iPhone на передний план
У меня есть простой проект, где пользователь нажимает кнопку на Apple Watch и воспроизводит звук на iPhone, это достаточно просто сделать с помощью метода openParentApplication и иметь код handleWatchKitExtensionRequest в AppDelegate. Однако, хотя это работает в симуляторе, оно НЕ будет работать на реальных устройствах, если приложение iPhone еще не открыто. Я пытаюсь выяснить, можно ли использовать другие методы, которые будут работать, даже если приложение для iPhone еще не открыто.
Я прочитал ответ на stackru, что можно использовать Handoff, чтобы (частично) вывести приложение телефона на передний план, используя WKInterfaceController updateUserActivity:userInfo:webpageURL:
а также UIApplicationDelegate application:continueUserActivity:restorationHandler
, Однако, как новый разработчик, я изо всех сил пытаюсь понять, как сделать это правильно, без каких-либо примеров. Может кто-нибудь привести пример кода, как это будет работать, где оба они используются вместе, чтобы запустить некоторый код в приложении iphone?
1 ответ
- Зарегистрируйте названия ваших видов деятельности в списке приложений вашего iphone. Добавьте строку с именем NSUserActivityTypes и сделайте ее массивом. Например:
Включите continueUserActivity: метод в свой AppDelegate. Например:
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler { // Extract the payload NSString *type = [userActivity activityType]; NSDictionary *userInfo = [userActivity userInfo]; // Assume the app delegate has a text field to display the activity information NSLog(@"User activity is of type %@, and user info %@", type, userInfo); restorationHandler(@[self.window.rootViewController]); return YES; }
В awakeWithContext вашего контроллера watchkit добавьте метод updateUserActivity.
[self updateUserActivity:@"com.co.YourApp.watchkitextension.activity" userInfo:@{@"yo": @"dawg"} webpageURL:nil];
Теперь вы должны увидеть значок приложения после открытия выбранного контроллера представления в вашем приложении для часов.