首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserActivity用于指示不起作用

NSUserActivity用于指示不起作用
EN

Stack Overflow用户
提问于 2017-01-07 18:09:54
回答 1查看 505关注 0票数 3

我在用我的应用程序的NSUserActivity实现mapItem时遇到了一些困难。

我只想在应用程序切换程序中使用“获取方向”建议,就像Foursquare所做的那样:

我在我的viewDidLoad方法中使用了以下代码,在视图控制器中,它显示了我想注册的位置(一个酒吧)。

代码语言:javascript
复制
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];

当它运行时,我在控制台中看到以下内容:

代码语言:javascript
复制
[main] sendUserActivityToServer, called on activity C626E4B1-ADF8-49D8-80FB-C773DB71243D after it had been invalidated, so doing nothing.

这表明,由于某种原因,我的activity项目立即失效。我添加了以下内容来设置expirationDate,但仍然在控制台中获得相同的消息。

代码语言:javascript
复制
activity.expirationDate = [NSDate distantFuture];

据我所知,我已经跟踪了文档中的所有内容,https://developer.apple.com/reference/foundation/nsuseractivity?language=objc

我还将我的活动类型添加到NSUserActivityTypes中,尽管我认为这对于启动我的应用程序和接收一个活动对象是绝对必要的,这不是我现在关心的问题。

解决:基于下面@raidfive的正确答案,activity现在是一个具有强引用的类属性:

代码语言:javascript
复制
@property (strong) NSUserActivity *activity;
...
[_activity becomeCurrent];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-07 18:19:10

我不确定这是否适用于mapItem类型,但文档中提到:

您的应用程序必须维护对用于搜索结果的任何活动对象的强烈引用。

因此,您可能需要将activity存储为类级变量。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41524771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档