Я реализую приложение Car Play с расширением Siri.Мне удалось расширить, и теперь приложение проходит через функции разрешения, подтверждения и обработки, как описано Apple.Однако у меня возникла проблема, когда функция handle не передает параметр userActivity в функцию AppDelegate основного приложения:
(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
После некоторого изучения я видел пример приложения, использующего AppGroup, с которым я не очень хорошо знаком,Требуется ли реализовать AppGroup, чтобы Siri запускала / возобновляла приложение с помощью функции AppDelegate?Ниже приведен мой код разрешения:
(void)handleSetClimateSettingsInCar:(nonnull INSetClimateSettingsInCarIntent *)intent completion:(nonnull void (^)(INSetClimateSettingsInCarIntentResponse * _Nonnull))completion {
NSLog(@"handlesetclimatesettingsincar");
//Set useractivity
NSString *temp = intent.temperature != nil ? [[NSNumber numberWithDouble:intent.temperature.doubleValue] stringValue] : @"";
NSString *fanSpd = intent.fanSpeedIndex != nil ? [intent.fanSpeedIndex stringValue] : @"";
NSLog(@"tmep: %@\nfanSpd: %@", temp, fanSpd);
id objects[] = {temp, fanSpd};
id keys[] = {@"temperature", @"fanSpeed"};
NSUInteger count = sizeof(objects)/sizeof(id);
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys count:count];
NSUserActivity *userActivity = [[NSUserActivity alloc]initWithActivityType:NSStringFromClass([INSetClimateSettingsInCarIntentResponse class])];
userActivity.title = @"INSetClimateSettingsInCarIntentResponse";
userActivity.userInfo = dict;
userActivity.eligibleForHandoff = YES;
userActivity.eligibleForSearch = YES;
userActivity.needsSave = YES;
[userActivity becomeCurrent];
INSetClimateSettingsInCarIntentResponse *response = [[INSetClimateSettingsInCarIntentResponse alloc] initWithCode:INSetClimateSettingsInCarIntentResponseCodeInProgress userActivity:userActivity];
completion(response);
}
Я также понял, что в некотором домене Siri есть код .continueInApp для намеренного ответа, в то время как CarPlay не имеет этого кода.Говорят, что расширение CarPlay не может вызывать функцию continueUserActivity основного приложения?