Sirikit: передает .continueInApp или AppGroup параметры в основное приложение - PullRequest
0 голосов
/ 16 октября 2018

Я реализую приложение 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 основного приложения?

...