MST

星途 面试题库

面试题:Objective-C中User Activity与Handoff协作的基本实现步骤

请简述在Objective-C项目中,实现User Activity与Handoff协作的主要步骤,包括如何配置项目、创建User Activity以及传递相关信息等。
33.0万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

配置项目

  1. 启用 Handoff:在 Xcode 项目设置中,打开 Capabilities 选项卡,启用 Handoff 功能。
  2. 配置 Associated Domains:同样在 Capabilities 中,添加 associated-domains 并按照格式 applinks:your_domain 配置你的域名(需要在服务器端配置相应的关联文件)。

创建 User Activity

  1. 导入框架:在需要使用 User Activity 的文件中导入 CoreSpotlightMobileCoreServices 框架。
#import <CoreSpotlight/CoreSpotlight.h>
#import <MobileCoreServices/MobileCoreServices.h>
  1. 创建 User Activity 对象:在合适的时机(比如视图加载、用户操作等)创建 NSUserActivity 对象,并设置相关属性。
NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@"com.yourcompany.yourapp.activitytype"];
userActivity.title = @"User Activity Title";
userActivity.userInfo = @{@"key": @"value"};
userActivity.eligibleForHandoff = YES;
  1. 设置相关类型:设置 userActivitywebpageURL 等属性(如果适用),并关联适当的类型标识符。
userActivity.webpageURL = [NSURL URLWithString:@"https://yourdomain.com/specific-page"];
userActivity.contentAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeData];
  1. 关联到视图控制器:如果在视图控制器中创建,将 userActivity 关联到视图控制器。
self.userActivity = userActivity;
  1. 更新 User Activity:在相关操作发生变化时,及时更新 userActivity 的属性,并调用 becomeCurrent 方法。
userActivity.title = @"Updated Title";
[userActivity becomeCurrent];

传递相关信息

  1. 信息传递:在 userInfo 字典中添加需要传递的信息,如上述创建 userActivity 时设置 userInfo。其他设备可以通过获取 NSUserActivityuserInfo 来获取这些传递的信息。
  2. 恢复 Activity:在目标设备上,当通过 Handoff 启动应用时,应用代理的 application:continueUserActivity:restorationHandler: 方法会被调用,在这个方法中可以获取 NSUserActivity 并恢复相关状态。
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    // 处理恢复逻辑,从 userActivity.userInfo 获取传递信息
    return YES;
}