Использование Handoff с Watchkit, чтобы вывести приложение iPhone на передний план

У меня есть простой проект, где пользователь нажимает кнопку на Apple Watch и воспроизводит звук на iPhone, это достаточно просто сделать с помощью метода openParentApplication и иметь код handleWatchKitExtensionRequest в AppDelegate. Однако, хотя это работает в симуляторе, оно НЕ будет работать на реальных устройствах, если приложение iPhone еще не открыто. Я пытаюсь выяснить, можно ли использовать другие методы, которые будут работать, даже если приложение для iPhone еще не открыто.

Я прочитал ответ на stackru, что можно использовать Handoff, чтобы (частично) вывести приложение телефона на передний план, используя WKInterfaceController updateUserActivity:userInfo:webpageURL: а также UIApplicationDelegate application:continueUserActivity:restorationHandler, Однако, как новый разработчик, я изо всех сил пытаюсь понять, как сделать это правильно, без каких-либо примеров. Может кто-нибудь привести пример кода, как это будет работать, где оба они используются вместе, чтобы запустить некоторый код в приложении iphone?

1 ответ

  1. Зарегистрируйте названия ваших видов деятельности в списке приложений вашего iphone. Добавьте строку с именем NSUserActivityTypes и сделайте ее массивом. Например:

введите описание изображения здесь

  1. Включите 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;
            }
    
  2. В awakeWithContext вашего контроллера watchkit добавьте метод updateUserActivity.

    [self updateUserActivity:@"com.co.YourApp.watchkitextension.activity" userInfo:@{@"yo": @"dawg"} webpageURL:nil];
    

Теперь вы должны увидеть значок приложения после открытия выбранного контроллера представления в вашем приложении для часов.

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