Siri 建议 — 使用 Objective-C 集成 Siri Shortcuts
Siri 建议 — 使用 Objective-C 集成 Siri Shortcuts
背景
Siri Shortcuts 是 iOS 12 引入的一项功能,旨在提供应用程序与 Siri 的深度集成。通过 Siri Shortcuts,应用可以在适当的时候向用户推荐相关操作,从而提升用户体验和应用的使用率。本文将介绍如何在 Objective-C 项目中集成 Siri Shortcuts 并进行模块化处理。
优势
- 提高用户体验:通过向用户推荐相关操作,提升应用的便利性和易用性。
- 增加应用曝光率:用户可以在 Siri 建议中看到应用的推荐操作,从而增加应用的曝光率。
- 简化用户操作:用户可以通过 Siri 语音命令快速执行应用中的常用操作。
操作步骤
配置 Info.plist
首先,在 Info.plist
文件中添加 NSUserActivityTypes
键,以声明应用支持的用户活动类型:
<key>NSUserActivityTypes</key>
<array>
<string>loying.myAppName.myUserBehaviorA</string>
</array>
上报 Siri 建议
- (void)reportUserActivity {
NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@"loying.myAppName.myUserBehaviorA"];
userActivity.eligibleForSearch = YES;
userActivity.eligibleForPrediction = YES;
userActivity.eligibleForPublicIndexing = YES;
userActivity.title = @"BehaviorA Title";
userActivity.persistentIdentifier = @"myUserBehaviorA";
userActivity.userInfo = @{@"testKey" : @"testValue"};
userActivity.webpageURL = [NSURL URLWithString:@"https://www.infoq.cn/article/lsuikfdr0eyv2lusatjt"];
if (@available(iOS 14.0, *)) {
userActivity.contentAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithContentType:UTTypeItem];
userActivity.contentAttributeSet.contentDescription = @"BehaviorA subTitle";
}
[userActivity becomeCurrent];
}
处理 Siri 建议点击后的回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
NSLog(@"continueUserActivity");
if ([userActivity.activityType isEqualToString:@"loying.LearnSiriShortcut.type"]) {
// 执行相应的业务逻辑
}
return YES;
}
删除 Siri 建议
您可以删除指定或全部 Siri Shortcuts:
// 删除指定的 Shortcut
[NSUserActivity deleteSavedUserActivitiesWithPersistentIdentifiers:identifer completionHandler:^{
// 处理删除完成后的逻辑
}];
// 删除全部 Shortcuts
[NSUserActivity deleteAllSavedUserActivitiesWithCompletionHandler:^{
// 处理删除完成后的逻辑
}];
进阶的 Siri 建议
除了基础的用户活动上报,您还可以配置更多的用户活动信息,如时间、地点、联系人等,以提升 Siri 建议的智能化程度:
- (void)reportAdvancedUserActivity {
NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@"com.example.app.viewLatestArticles"];
userActivity.title = @"View Latest Articles";
// 设置时间信息
NSDate *startDate = [NSDate date];
NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:3600];
userActivity.startDate = startDate;
userActivity.endDate = endDate;
// 设置地点信息
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(37.7749, -122.4194);
MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:location];
userActivity.mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];
// 设置联系人信息
CNMutableContact *contact = [[CNMutableContact alloc] init];
contact.givenName = @"John";
contact.familyName = @"Doe";
userActivity.contact = contact;
// 设置提醒信息
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKReminder *reminder = [EKReminder reminderWithEventStore:eventStore];
reminder.title = @"Buy Groceries";
reminder.dueDateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
userActivity.calendarItemIdentifier = reminder.calendarItemIdentifier;
// 设置网页链接
userActivity.webpageURL = [NSURL URLWithString:@"https://www.example.com"];
// 设置附加信息
userActivity.userInfo = @{@"key": @"value"};
// 提交用户活动
[userActivity becomeCurrent];
}
参考链接
通过上述步骤,您可以在 Objective-C 项目中顺利集成 Siri Shortcuts,实现对用户行为的智能推荐,从而提升用户体验和应用的使用率。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!