- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NSUserActivity
和 CoreSpotlight
API 以及来自 WWDC Introduction to Siri Shortcuts 的 NSUserActivity
示例代码部分和 Building for Voice with Siri Shortcuts视频,但是一旦我的用户删除了相应的数据,我在删除事件时遇到了问题。我的应用程序是一个图书阅读应用程序,用户可以在其中下载和阅读图书,所以我想为用户下载的每本书设置快捷方式,但当/如果他们删除图书时删除快捷方式。
我这里有定义 NSUserActivity
及其相关属性的代码:
self.activity = [[[NSUserActivity alloc] initWithActivityType: @"Read a book"] autorelease];
self.activity.eligibleForSearch = true;
self.activity.eligibleForHandoff = true;
self.activity.eligibleForPublicIndexing = true;
self.activity.userInfo = @{ @"productID" : productID };
self.activity.requiredUserInfoKeys = [NSSet setWithArray: @[@"productID"]];
if (@available(iOS 12.0, *))
{
self.activity.eligibleForPrediction = true;
self.activity.suggestedInvocationPhrase = @"Read";
self.activity.persistentIdentifier = NSUserActivityPersistentIdentifier(productID);
}
我还有定义 CSSearchableItemAttributeSet
及其关联属性的代码,将其连接到 NSUserActivity
,并使其处于事件状态:
CSSearchableItemAttributeSet *attributes = [[[CSSearchableItemAttributeSet alloc] initWithItemContentType: (NSString *)kUTTypeItem] autorelease];
attributes.title = bookTitle;
attributes.keywords = @[keywords];
attributes.contentDescription = author;
attributes.thumbnailData = [NSData dataWithContentsOfURL: self.bookCover];
attributes.domainIdentifier = productID;
self.activity.contentAttributeSet = attributes;
self.userActivity = self.activity;
[self.activity becomeCurrent];
我通过研究发现使用 attributes.relatedUniqueIdentifier
摆脱了 userInfo
字典,在我的例子中,这使得快捷方式根本不显示,所以我改用attributes.domainIdentifier
。
现在在另一个文件中我去删除快捷方式。我试过使用这段代码,它使用 self.activity.persistentIdentifier
属性:
if (@available(iOS 12.0, *)) {
[NSUserActivity deleteSavedUserActivitiesWithPersistentIdentifiers: @[NSUserActivityPersistentIdentifier(productID)] completionHandler: ^{}];
}
我也试过使用这段代码,它使用了 attributes.domainIdentifier
属性:
[[CSSearchableIndex defaultSearchableIndex] deleteSearchableItemsWithDomainIdentifiers: @[productID] completionHandler: ^(NSError * _Nullable error) {}];
而且这些解决方案都没有奏效。在这两种情况下,我都检查了传递到函数中的 productID
参数,并且两次都是正确的值。
我是否做错了什么或遗漏了什么?
提前感谢大家的帮助。这是我的第一篇文章,如果我需要提供更多信息,请告诉我。
最佳答案
我想通了我错过了什么。我需要创建一个 CSSearchableItem
,将其 uniqueIdentifier
和 domainIdentifier
属性设置为等于 NSUserActivity
的属性。然后我需要索引 CSSearchableItem
。
这是我遗漏的代码:
attributes.relatedUniqueIdentifier = productID
CSSearchableItem *item = [[[CSSearchableItem alloc] init] autorelease];
item.uniqueIdentifier = productID;
item.domainIdentifier = productID;
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems: @[item] completionHandler: ^(NSError * _Nullable error) {}];
关于ios - 带有 NSUserActivity 的 Siri 快捷方式 - 事件删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50976151/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!