2015-06-15 3 views
11

Ниже приведен код, который я пытаюсь реализовать, чтобы сделать приложение деятельности и состояния поиска, но не в состоянии показать на поиск IOSСделать App Мероприятия и государства Searchable с помощью NSUserActivity

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]; 

Link сделать мой вопрос более Чисто.

+0

Вы пробовали после integraton ядра Spotlight API, а? –

+0

Yup Я добавил CoreSpotLight и MobileCoreServices – Ayush

+0

Хорошо. Итак, вы внедрили весь необходимый метод прожектора? Я знаю, что это не требуется, но Apple рекомендует работать с NSUserActivity. –

ответ

6

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

0

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

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

+0

i протестирован в устройстве..не работает..акие обходные решения? – christijk

+0

Мне не удалось выполнить эту работу, обходным путем было бы связать CSSearchItem с активностью –

-2

Я не мог заставить его работать с бета-версией 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"); 
}]; 

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

20

От Форумов Apple:

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

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

+0

Y R right, работает для меня, thx. Это немного подключено ... – Joey

+0

Это совершенно разумно. Для тех из вас, кто создал класс только для индексирования материалов CoreSpotlight и UserActivity, то, что я сделал для решения проблемы, это создание статического NSMutableArray * activityArray = nil; инициализируя его в + (void), инициализируя в качестве пустого изменяемого массива, а затем добавляя к нему действия. Это может быть немного излишним, но он работает до сих пор, и я сделаю это лучше позже. – Uzaak

 Смежные вопросы

  • Нет связанных вопросов^_^