Titanium SDK 深度解析:iOS SearchableItemAttributeSet 模块详解
概述
在 Titanium SDK 中,Titanium.App.iOS.SearchableItemAttributeSet
模块是 iOS 设备搜索功能的核心组件之一。它允许开发者定义丰富的元数据属性,这些属性将被用于 Spotlight 搜索和用户活动索引。本文将深入探讨这一模块的功能、使用场景和最佳实践。
核心概念
SearchableItemAttributeSet 本质上是一个元数据容器,它为 iOS 设备上的搜索功能提供结构化数据支持。通过这个模块,开发者可以为应用中的各种内容(如文档、图片、音频等)添加详细的描述信息,使这些内容能够被系统搜索到。
相关模块
要完整实现 iOS 搜索功能,通常需要配合使用以下三个模块:
- SearchableItemAttributeSet - 创建与内容相关的元数据
- SearchableItem - 将元数据打包成可索引的对象
- SearchableIndex - 将可索引对象添加到设备搜索索引中
基本使用
创建 SearchableItemAttributeSet
要创建一个 SearchableItemAttributeSet 对象,必须使用 Titanium.App.iOS.createSearchableItemAttributeSet
方法,并且至少需要设置 itemContentType
属性:
var itemAttr = Ti.App.iOS.createSearchableItemAttributeSet({
itemContentType: Ti.App.iOS.UTTYPE_IMAGE
});
必需属性
itemContentType
是创建 SearchableItemAttributeSet 时必须设置的属性,它定义了内容类型。Titanium SDK 提供了一系列常量来表示不同的统一类型标识符(UTI),如:
Ti.App.iOS.UTTYPE_IMAGE
- 图片类型Ti.App.iOS.UTTYPE_PLAIN_TEXT
- 纯文本类型Ti.App.iOS.UTTYPE_PDF
- PDF 文档类型
主要属性分类
SearchableItemAttributeSet 提供了大量属性,可以大致分为以下几类:
1. 基础信息
displayName
: 在 UI 中显示的本地化字符串alternateNames
: 备用显示名称数组title
: 项目标题contentDescription
: 内容描述keywords
: 关联关键词数组
2. 文件相关
path
: 完整路径fileSize
: 文件大小(MB)creator
: 创建文档的应用程序securityMethod
: 加密方法contentType
: UTI 类型contentTypeTree
: 内容类型树数组
3. 多媒体相关
duration
: 持续时间(秒)audioSampleRate
: 音频采样率(Hz)audioChannelCount
: 音频通道数tempo
: 音乐节奏(BPM)keySignature
: 音乐调号album
: 专辑名称artist
: 艺术家名称
4. 文档相关
pageCount
: 页数pageWidth
: 页面宽度(点)pageHeight
: 页面高度(点)fontNames
: 使用的字体名称数组
5. 时间相关
contentCreationDate
: 内容创建日期contentModificationDate
: 内容修改日期downloadedDate
: 下载日期lastUsedDate
: 最后使用日期
6. 地理信息
fullyFormattedAddress
: 完整格式化地址subThoroughfare
: 街道编号thoroughfare
: 街道名称postalCode
: 邮政编码
实际应用示例
以下是一个完整的示例,展示如何创建可搜索内容并将其添加到设备索引中:
// 创建属性集
var itemAttr = Ti.App.iOS.createSearchableItemAttributeSet({
itemContentType: Ti.App.iOS.UTTYPE_IMAGE,
title: "Titanium 教程示例",
contentDescription: "技术示例\n创建于: " + String.formatDate(new Date(), "short"),
keywords: ["移动开发", "Appcelerator", "Titanium"]
});
// 创建可搜索项
var item = Ti.App.iOS.createSearchableItem({
uniqueIdentifier: "unique-id-123",
domainIdentifier: "com.example.app",
attributeSet: itemAttr
});
// 添加到搜索索引
var indexer = Ti.App.iOS.createSearchableIndex();
indexer.addToDefaultSearchableIndex([item], function(e) {
if (e.success) {
Ti.API.info("内容已成功添加到搜索索引");
} else {
Ti.API.error("添加失败: " + JSON.stringify(e.error));
}
});
最佳实践
- 合理设置内容类型:确保
itemContentType
准确反映内容性质 - 使用关键词优化搜索:添加相关关键词提高搜索命中率
- 保持元数据更新:当内容变化时及时更新索引
- 考虑用户体验:提供有意义的
displayName
和contentDescription
- 处理错误情况:实现错误回调以处理索引失败情况
兼容性说明
SearchableItemAttributeSet 功能需要 iOS 9 或更高版本支持,在 Titanium SDK 5.0.0 及更高版本中可用。在使用前,建议检查设备兼容性:
if (Ti.Platform.name === 'iPhone OS' && parseInt(Ti.Platform.version.split('.')[0]) >= 9) {
// 支持 Spotlight 搜索功能
}
总结
Titanium SDK 的 SearchableItemAttributeSet 模块为开发者提供了强大的工具,可以将应用内容深度集成到 iOS 的系统搜索功能中。通过合理设置各种元数据属性,可以显著提升应用内容的可发现性和用户体验。无论是文档、图片还是多媒体内容,都可以通过这一功能获得更好的曝光机会。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考