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

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

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

Ответы

Ответ 1

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

enter image description here

  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. В вашем контроллере watchkit awakeWithContext добавьте метод updateUserActivity.

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

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