gpt4 book ai didi

ios - 使用 NSUserActivity 和 CoreSpotlight 但仍将 iOS8 设置为部署目标

转载 作者:可可西里 更新时间:2023-11-01 05:20:05 25 4
gpt4 key购买 nike

是否可以使用iOS9的新特性如NSUserActivityCoreSpotlight,但还是将我的Development Target设置为8.2,这样iOS8的用户仍然可以使用应用程序?

我假设我只需要检查 iOS 版本号或使用 respondsToSelector:

这是正确的吗?

最佳答案

是的,我在我的一个应用程序中执行此操作(实际上有一个 iOS 7 的部署目标)。做起来很简单。只需确保 CSSearchableIndex 类存在,使 CoreSpotlight 框架可选,并正确编写代码以防止较新的 API 在具有较早版本 iOS 的设备上运行。

您甚至可以保护代码,以便它在 Xcode 6 下编译(如果您出于某种原因这样做的话)。

例子:

// Ensure it only compiles with the Base SDK of iOS 9 or later
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
// Make sure the class is available and the device supports CoreSpotlight
if ([CSSearchableIndex class] && [CSSearchableIndex isIndexingAvailable]) {
dispatch_async(_someBGQueue, ^{
NSString *someName = @"Some Name";
CSSearchableIndex *index = [[CSSearchableIndex alloc] initWithName:someName];
// rest of needed code to index with Core Spotlight
});
}
#endif

在您的应用委托(delegate)中:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorableObjects))restorationHandler {
if ([[userActivity activityType] isEqualToString:CSSearchableItemActionType]) {
// This activity represents an item indexed using Core Spotlight, so restore the context related to the unique identifier.
// The unique identifier of the Core Spotlight item is set in the activity’s userInfo for the key CSSearchableItemActivityIdentifier.
NSString *uniqueIdentifier = [userActivity.userInfo objectForKey:CSSearchableItemActivityIdentifier];
if (uniqueIdentifier) {
// process the identifier as needed
}
}

return NO;
}
#endif

关于ios - 使用 NSUserActivity 和 CoreSpotlight 但仍将 iOS8 设置为部署目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com