使用 NSUserActivity 在锁定屏幕上看不到我的 siri 快捷方式

Posted

技术标签:

【中文标题】使用 NSUserActivity 在锁定屏幕上看不到我的 siri 快捷方式【英文标题】:I can't see my siri shortcuts on lock screen using NSUserActivity 【发布时间】:2018-08-24 20:25:18 【问题描述】:

我在 info.plist 中添加了我的带有标签 NSUserActivityTypes 的字符串。

我在屏幕的viewDidload方法上添加了这段代码:

NSUserActivity *userActivityTag = [[NSUserActivity alloc] initWithActivityType:kVoucher];

if(@available(ios 12.0, *)) 
    [userActivityTag setEligibleForPrediction:YES];
    userActivityTag.suggestedInvocationPhrase = [NSString stringWithFormat:@"Let's Voucher this"];


[userActivityTag setEligibleForSearch:YES];
[userActivityTag setRequiredUserInfoKeys:nil];
userActivityTag.title = [NSString stringWithFormat:@"Voucher"];
userActivityTag.userInfo = @
                             @"value":@"key"
                             ;

UIImage *logo = [UIImage imageNamed:@"someImage"];
NSData *logoNSData = UIImageJPEGRepresentation(logo, 1.0f);

CSSearchableItemAttributeSet *attributes = [[CSSearchableItemAttributeSet alloc] initWithItemContentType: (NSString *)kUTTypeItem];
attributes.title = @"title";
attributes.keywords = @[@"implement", @"something", @"lol"];
attributes.contentDescription = @"Subtitle";
attributes.thumbnailData = logoNSData;
attributes.domainIdentifier = @"ownID";

userActivityTag.contentAttributeSet = attributes;
[userActivityTag becomeCurrent];

之后,我进入该屏幕并放置一个断点以探测代码是否已执行。 我在“设置”->“开发者”->“显示最近的快捷方式”和“在锁定屏幕上显示捐赠”上打开了这两个选项。

在我的 AppDelegate 上我有这个:

if([userActivity.activityType isEqualToString:kVoucher]) 
    // Restore state for userActivity and userINFO


所以,问题是:为什么,我在锁屏上看不到我的快捷方式?

请帮忙!

【问题讨论】:

它对你有用吗? 【参考方案1】:

当你解锁手机并进入siri建议屏幕时你能看到它吗?

尝试将此活动设置为您当前的视图控制器。

[self setUserActivity: userActivityTag]

不知道它是否有用,但它对我有用。

【讨论】:

以上是关于使用 NSUserActivity 在锁定屏幕上看不到我的 siri 快捷方式的主要内容,如果未能解决你的问题,请参考以下文章

iOS 10 NSUserActivity,位置建议 - MKMapItem 未出现在地图中

NSUserActivity 在 iOS9 中不能按关键字(仅按标题)搜索?

Swift 场景 userActivity NSUserActivity 传你 viewController

如何在屏幕镜像期间锁定Android屏幕?

Siri ShortCuts - NSUserActivity,不显示给定的缩略图

如何使用默认查看按钮确定用户是不是在锁定屏幕上查看通知