Подтвердить что ты не робот

Сделать действия приложений и состояния поиска с помощью NSUserActivity

Ниже приведен код, который я пытаюсь реализовать, чтобы сделать действия приложений и состояния доступны для поиска, но не могут отображаться при поиске в iOS

NSUserActivity *userActivity = [[NSUserActivity alloc]initWithActivityType:@"com.mycompany.activity-type"];

userActivity.title = @"Hello world from in app search";
userActivity.keywords = [NSSet setWithArray:@[@"Hello",@"Welcome", @"search"]];
userActivity.userInfo = @{@"id":@"com.example.state"};

userActivity.eligibleForSearch = YES;    
[userActivity becomeCurrent];

Ссылка, чтобы сделать мой вопрос более понятным.

4b9b3361

Ответ 1

От Форумы Apple:

Одна вещь, которая укусила несколько человек (включая меня), состоит в том, что деятельность не должна быть освобождена. Если ваш код работает только с NSUserActivities (т.е. Не используя CoreSpotlight), а затем make убедитесь, что ваши действия не освобождаются немедленно.
В моем case, у меня был код, который выделял NSUA, устанавливая некоторые свойства на нем, вызвав startCurrent, но тогда объект выйдет из объема и освобождения. Если вы делаете это, попробуйте поднять активность в сильное свойство, чтобы увидеть, сможете ли вы увидеть результаты, когда вы поиск.

https://forums.developer.apple.com/message/13640#13640

Ответ 2

Я обнаружил, что перед вызовом -becomeCurrent вам необходимо назначить экземпляр NSUserActivity, который вы создали, для вашего текущего видимого свойства userActivity UIViewControllers. Он исправил это для меня, и элементы сразу появились как для передачи обслуживания на других устройствах, так и в поиске прожектора на том же устройстве.

Ответ 3

У меня была такая же проблема, и я читал на форумах разработчиков, что в семени 1 он работает только на устройстве. Я смог заставить его работать на устройстве.

Возможно, это, как и при передаче обслуживания, будет работать только на устройстве.

Ответ 4

Я не мог заставить его работать с бета-версией 2. Используя CSSearchableItemAttributeSet с

CSSearchableItemAttributeSet* attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString*)kUTTypeImage];
attributeSet.title = myobject.title;
attributeSet.keywords = [myobject.desc componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
attributeSet.contentDescription = myobject.desc;
if (myobject.images.count > 0) {
    attributeSet.thumbnailData = myobject.myimagedata;
}
attributeSet.rating = @(myobject.rating.integerValue / 2);

CSSearchableItem* item;
item = [[CSSearchableItem alloc] initWithUniqueIdentifier:@"..." domainIdentifier:@"..." attributeSet:attributeSet];
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler: ^(NSError * __nullable error) {
    NSLog(@"Search item indexed");
}];

работает, хотя и с изображениями. То, что я не мог найти, - это рейтинг, который можно найти где угодно.