У меня возникли проблемы с внедрением NSUserActivity с mapItem из моего приложения.NSUserActivity для направлений не работает
Все, что я хочу, чтобы иметь возможность использовать «Проложить маршрут» предложение в приложении переключателе, как Foursquare делает:
Я использую следующий код в моем viewDidLoad
методе, в контроллер просмотра, который отображает местоположение (паб), который я хочу зарегистрировать.
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];
Когда это работает я вижу следующее в консоли:
[main] sendUserActivityToServer, called on activity C626E4B1-ADF8-49D8-80FB-C773DB71243D after it had been invalidated, so doing nothing.
Что наводит на мысль моя activity
деталь быть признаны недействительными сразу по какой-то причине. Я добавил следующее, чтобы установить expirationDate
, но все равно получаю то же сообщение в консоли.
activity.expirationDate = [NSDate distantFuture];
Насколько я могу сказать, я следовал все в документации здесь https://developer.apple.com/reference/foundation/nsuseractivity?language=objc
Я также добавил свой тип активности на NSUserActivityTypes
, хотя я думаю, что это только строго необходимое для запуска моего приложения и получение объекта активности, который не является тем, о чем я сейчас говорю.
РЕШИТЬ: на основе правильного ответа из @raidfive ниже, activity
теперь класса с сильной ссылкой:
@property (strong) NSUserActivity *activity;
...
[_activity becomeCurrent];
BINGO! Большое спасибо. Я прочитал это в какой-то момент, но, возможно, отклонен как относящийся только к полным результатам поиска Spotlight. По-видимому, это действительно необходимо для этого случая использования. Ура! –
Удивительный! Рад слышать. – raidfive