2017-01-07 4 views
1

내 앱에서 mapItem으로 NSUserActivity를 구현하는 데 문제가 있습니다.NSUserActivity가 작동하지 않습니다.

enter image description here

을 내 viewDidLoad 방법에 다음 코드를 사용하고 있습니다에서 :

내가 원하는 건

은 정사각형이하는 것처럼, 응용 프로그램 전환기에서 "길 찾기"제안을 사용할 수있게하는 것입니다 등록하고 싶은 위치 (pub)를 표시하는 View Controller.

NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@"co.pubmapper.ViewPub"]; 

CLLocationCoordinate2D coords = CLLocationCoordinate2DMake(self.pub.lat, self.pub.lng); 
MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:coords]; 
MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark]; 
[mapItem setName:self.pub.name]; 
activity.mapItem = mapItem; 

// not sure any of these are necessary for my use case 
[activity setEligibleForSearch:YES]; 
[activity setEligibleForHandoff:YES]; 
[activity setEligibleForPublicIndexing:YES]; 

[activity becomeCurrent]; 

이 내가 콘솔에서 다음을 참조 실행 : 내 activity 항목이 어떤 이유로 즉시 무효화되고 제안

[main] sendUserActivityToServer, called on activity C626E4B1-ADF8-49D8-80FB-C773DB71243D after it had been invalidated, so doing nothing. 

. expirationDate을 설정하기 위해 다음을 추가했지만 여전히 콘솔에 같은 메시지가 표시됩니다.

activity.expirationDate = [NSDate distantFuture]; 

지금까지 나는이 내 응용 프로그램을 실행 만 꼭 필요하다고 생각하지만, 나는, 나는 또한 NSUserActivityTypes 내 활동 유형을 추가했습니다 여기에 문서의 모든 https://developer.apple.com/reference/foundation/nsuseractivity?language=objc

을 따랐습니다 말할 수있는 그리고 지금 당장 관심이없는 활동 객체를받는 것입니다.

이 해결 :이 mapItem 유형에 적용하지만, 문서 언급하면 ​​잘 모르겠어요

@property (strong) NSUserActivity *activity; 
... 
[_activity becomeCurrent]; 

답변

2

: 아래 @raidfive에서 정답을 기반으로, activity 강한 참조 클래스 속성은 지금 :

앱은 검색 결과에 사용하는 모든 활동 객체에 대한 강력한 참조를 유지해야합니다.

아마도 activity을 클래스 수준 변수로 저장해야 할 수도 있습니다.

+0

빙고! 고마워. 한 번에 그걸 읽었지만 아마 Spotlight 전체 검색 결과에만 관련이 있다고 생각한 것 같습니다. 실제로이 사용 사례에도 필요합니다. 건배! –

+0

굉장! 다행. – raidfive