Objective-C SDK
此代码仓库包含用于与Optimizely Full Stack和Optimizely Rollouts for Mobile and 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,则您可能需要添加编译器选项for线程安全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
-
将框架链接到您的项目。转到项目目标的 Link Binary With Libraries 并拖动以下内容至 Carthage/Build/<platform> 文件夹
OptimizelySDKCore.framework OptimizelySDKDatafileManager.framework OptimizelySDKEventDispatcher.framework OptimizelySDKShared.framework OptimizelySDKUserProfileService.framework OptimizelySDK<platform>.framework
-
为确保在归档应用时复制正确的位数相关的文件和dSYMs,您需要安装Carthage构建脚本
- 在目标中添加一个新的 Run Script 阶段。
- 在脚本区域包括
/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
- 在目标中添加一个新的 Run Script 阶段。
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应提示您选择目标。转到构建阶段,确保框架位于链接二进制与库部分。
-
转到常规选项卡,并将框架添加到嵌入的二进制文件部分。如果嵌入的二进制文件部分不可见,请将框架添加到复制文件部分(您可以在构建设置中添加此部分)。
-
如果您安装了通用框架,Apple商店将拒绝您的应用程序,因为它包含模拟器二进制文件。因此,您需要在上传应用程序之前运行一个用于剥离额外二进制文件的脚本。要做到这一点,请转到构建阶段,并通过单击
+
符号添加一个运行脚本部分。复制并粘贴以下脚本(确保将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文件夹中。
贡献
请参阅贡献。
版权
第一方代码(位于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/LICENSEl 已修改:是 分发:是 分发方式:二进制
murmur3 https://github.com/PeterScott/murmur3l
许可证 (公有领域):: https://github.com/PeterScott/murmur3l 已修改:否 分发:是 分发方式:二进制