配置项目
- 启用 Handoff:在 Xcode 项目设置中,打开
Capabilities
选项卡,启用 Handoff
功能。
- 配置 Associated Domains:同样在
Capabilities
中,添加 associated-domains
并按照格式 applinks:your_domain
配置你的域名(需要在服务器端配置相应的关联文件)。
创建 User Activity
- 导入框架:在需要使用 User Activity 的文件中导入
CoreSpotlight
和 MobileCoreServices
框架。
#import <CoreSpotlight/CoreSpotlight.h>
#import <MobileCoreServices/MobileCoreServices.h>
- 创建 User Activity 对象:在合适的时机(比如视图加载、用户操作等)创建
NSUserActivity
对象,并设置相关属性。
NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@"com.yourcompany.yourapp.activitytype"];
userActivity.title = @"User Activity Title";
userActivity.userInfo = @{@"key": @"value"};
userActivity.eligibleForHandoff = YES;
- 设置相关类型:设置
userActivity
的 webpageURL
等属性(如果适用),并关联适当的类型标识符。
userActivity.webpageURL = [NSURL URLWithString:@"https://yourdomain.com/specific-page"];
userActivity.contentAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeData];
- 关联到视图控制器:如果在视图控制器中创建,将
userActivity
关联到视图控制器。
self.userActivity = userActivity;
- 更新 User Activity:在相关操作发生变化时,及时更新
userActivity
的属性,并调用 becomeCurrent
方法。
userActivity.title = @"Updated Title";
[userActivity becomeCurrent];
传递相关信息
- 信息传递:在
userInfo
字典中添加需要传递的信息,如上述创建 userActivity
时设置 userInfo
。其他设备可以通过获取 NSUserActivity
的 userInfo
来获取这些传递的信息。
- 恢复 Activity:在目标设备上,当通过 Handoff 启动应用时,应用代理的
application:continueUserActivity:restorationHandler:
方法会被调用,在这个方法中可以获取 NSUserActivity
并恢复相关状态。
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
// 处理恢复逻辑,从 userActivity.userInfo 获取传递信息
return YES;
}