Objective-C SDK
此存储库包含用于与 Optimizely Full Stack 和 Optimize Rollouts for Mobile 和 OTT 一起使用的 Objective-C SDK。
Optimizely Full Stack 是面向产品开发团队的 A/B 测试和功能标志管理。在任何应用程序中进行实验。将每项路线图功能都作为学习的机会。更多信息请访问 https://www.optimizely.com/platform/full-stack/,或查看 文档。
Optimizely Rollouts 为开发团队提供免费的功能标志。轻松推出和撤回任何应用程序中的功能,无需代码部署。减轻每项路线图功能的风险。更多信息请访问 https://www.optimizely.com/rollouts/,或查看 文档。
入门指南
注意
对于新用户和升级 iOS 用户,我们推荐使用我们完全用 Swift 编写的全新 Swift-SDK。Swift SDK 将作为我们未来新开发的 iOS SDK。它与 Objective-C SDK 功能兼容,并提供简化接口的扩展功能集。
现有的 Objective-C SDK 用户可以查看我们的 指南文档 以迁移到新的 Swift SDK。
使用SDK
请参阅安装iOS和tvOS SDKs,了解如何设置Optimizely X项目并开始使用SDK。
要求
- iOS 8.0+ / tvOS 9.0+
安装SDK
请注意以下内容,其中 <platform> 代表您正在构建应用程序的平台。目前,我们支持 iOS
和 tvOS
平台。
**注意:** 如果您或其他框架正在使用sqlite,那么您可能需要添加thread safe sqlite的编译选项:SQLITE_THREADSAFE=1 https://www.sqlite.org/threadsafe.html
Cocoapod
- 请将以下行添加到 Podfile
use_frameworks!
pod 'OptimizelySDK<platform>', '~> 3.1.5'
- 运行以下命令
pod install
Cocoapods进一步的安装指令:https://guides.cocoapods.org.cn/using/getting-started.html
Carthage
- 请将以下行添加到 Cartfile
github "optimizely/objective-c-sdk" ~> 3.1.5
-
运行以下命令
carthage update
-
将框架链接到您的项目中。转到项目目标中的 链接二进制与库 ,并将以下内容从 Carthage/Build/<platform> 文件夹拖动
OptimizelySDKCore.framework OptimizelySDKDatafileManager.framework OptimizelySDKEventDispatcher.framework OptimizelySDKShared.framework OptimizelySDKUserProfileService.framework OptimizelySDK<platform>.framework
-
要确保存档您的应用程序时正确复制了与bitcode相关的文件和dSYMs,您需要安装一个Carthage构建脚本
- 在目标项目的构建阶段中添加一个新的运行脚本阶段。
- 在脚本区域包含以下内容
/usr/local/bin/carthage copy-frameworks
- 将框架路径添加到输入文件列表中
$(SRCROOT)/Carthage/Build/<platform>/OptimizelySDKCore.framework
$(SRCROOT)/Carthage/Build/<platform>/OptimizelySDKDatafileManager.framework
$(SRCROOT)/Carthage/Build/<platform>/OptimizelySDKEventDispatcher.framework
$(SRCROOT)/Carthage/Build/<platform>/OptimizelySDKShared.framework
$(SRCROOT)/Carthage/Build/<platform>/OptimizelySDKUserProfileService.framework
$(SRCROOT)/Carthage/Build/<platform>/OptimizelySDK<platform>.framework
- 将已复制框架的路径添加到输出文件列表中
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/OptimizelySDKCore.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/OptimizelySDKDatafileManager.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/OptimizelySDKEventDispatcher.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/OptimizelySDKShared.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/OptimizelySDKUserProfileService.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/OptimizelySDK<platform>.framework
- 在目标项目的构建阶段中添加一个新的运行脚本阶段。
关于Carthage的进一步安装说明:https://github.com/Carthage/Carthage
手动安装
通用框架可以在不使用第三方依赖管理器的情况下用于应用程序。通用框架包含 Optimizely X Mobile 所有模块,包括
OptimizelySDKCore
OptimizelySDKShared
OptimizelySDKDatafileManager
OptimizelySDKEventDispatcher
OptimizelySDKUserProfileService
通用框架适用于iOS的架构包括以下
i386
x86_64
ARMv7
ARMv7s
ARM64
通用框架适用于tvOS的架构包括以下
x86_64
ARM64
iOS和tvOS的通用框架都启用了Bitcode。
想要安装通用框架,请按照以下步骤操作
-
解压缩框架,然后将其拖动到Xcode项目;Xcode应提示您选择一个目标。转到“构建阶段”,确保框架位于“链接二进制与库”部分。
-
转到“通用”选项卡,并将框架添加到“嵌入的二元文件”部分。如果“嵌入的二元文件”部分不可见,请在“复制文件”部分添加框架(您可以在“构建设置”中添加此部分)。
-
如果将通用框架安装到App Store应用程序中,它将包括模拟器二进制文件,因此会被拒绝。因此,在上传应用程序之前,需要运行一个去除额外二进制文件的脚本。要做到这一点,请转到“构建阶段”,通过点击
+
符号添加一个“运行脚本”部分。复制并粘贴以下脚本(确保将FRAMEWORK_NAME
替换为适当的框架名称! )FRAMEWORK="FRAMEWORK_NAME" FRAMEWORK_EXECUTABLE_PATH="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/$FRAMEWORK.framework/$FRAMEWORK" EXTRACTED_ARCHS=() for ARCH in $ARCHS do lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") done lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" rm "${EXTRACTED_ARCHS[@]}" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
如果您选择自己构建通用框架,可以通过运行OptimizelySDKiOS-Universal
或OptimizelySDKTVOS-Universal
方案来完成。在这些方案构建完成后,框架将输出到OptimizelySDKUniversal/generated-frameworks
文件夹中。
贡献
请参阅CONTRIBUTING。
鸣谢
第一方代码(位于OptimizelySDKCore/、OptimizelySDKDatafileManager/、OptimizelySDKEventDispatcher/、OptimizelySDKiOS/、OptimizelySDKShared/、OptimizelySDKTVOS/、OptimizelySDKUniversal/、OptimizelySDKUserProfileService/等目录下)由Optimizely, Inc.及其贡献者版权所有,并按照Apache 2.0许可协议授权。
附加代码
FMDB https://github.com/ccgus/fmdb
许可协议(MIT):https://github.com/ccgus/fmdb/blob/master/LICENSE.txt 已修改:是 分发:是 分发形式:二进制
SQLITE3 https://www.sqlite.org/index.html
许可协议(公有领域):https://www.sqlite.org/copyright.html 已修改:是 分发:是 分发形式:二进制
JSONModel https://github.com/jsonmodel/jsonmodel
许可协议(MIT):https://github.com/jsonmodel/jsonmodel/blob/master/LICENSE 已修改:是 分发:是 分发形式:二进制
murmur3 https://github.com/PeterScott/murmur3
许可协议(公有领域):https://github.com/PeterScott/murmur3 已修改:否 分发:是 分发形式:二进制