Record360 iOS SDK
简介
Record360SDK.framework 是一个 Cocoa 框架,允许移动客户端利用 Record360。这允许客户端使用 Record360 工作流跟踪和记录资产的状态。需要 Record360 账户。请联系 [email protected] 获取详细信息。
要求
- iOS 12.0 或更高版本
- iPhone 8 及以上。
- iPad 4 及以上。
- iPad mini 2 及以上。
- iPod Touch 6G 及以上。
示例
要运行示例项目,请克隆仓库,然后从 Example 目录中运行 pod install
。
准备
为了使用SDK框架,需要Record360的账户。请联系[email protected]获取详细信息。
此SDK不支持暗黑模式。请在您的info.plist文件中添加以下外观属性:
通过CocoaPods安装
Record360 SDK可以使用CocoaPods进行安装。CocoaPods是一个依赖管理器,用于自动化将第三方库集成到您的项目中。如果您还没有安装CocoaPods,请访问CocoaPods了解安装方法。
Podfile
在您的Xcode项目目录中创建一个Podfile,包含以下行。
platform :ios, '12.0'
use_frameworks!
pod 'Record360SDK', '~> 4.9.5'
从命令行执行pod install
以添加Record360SDK。
注意:如果您想将驾照验证功能打包进SDK中,请联系我们[email protected]。
不通过CocoaPods安装
Record360可以提供框架,请联系[email protected]获取更多信息。
集成Record360
开始检查上传处理流程
- 指定一个Record360Delegate来处理检查上传事件。注意,上传过程是异步的,所以处理委托不会在过程完成立即被调用。
@interface MyApplicationViewController () <Record360Delegate>
- 创建一个Record360对象来处理文件上传,并向委托提供关于上传进度事件的情报。传入一个处理检查上传事件的委托。
Record360 *record360 = [[Record360 alloc] initWithDelegate:self];
- 创建一个Record360ViewController对象。传入登录凭据、已创建的record360对象以及显示工作流程过程的UIViewController。然后设置record360ViewController对象的委托以响应工作流程事件。
Record360ViewController *record360ViewController = [Record360ViewController loadControllerWithUserName:@"[email protected]" andPassword:@"P@ssword!" sendTo:record360 displayOn:self]];
record360ViewController.delegate = self;
您的类现在看起来像这样
#import <Record360SDK/Record360.h>
@interface MyApplicationViewController () <Record360Delegate>
@property (nonatomic) Record360 *record360;
@end
@implementation
- (void)viewDidLoad {
[super viewDidLoad];
self.record360 = [[Record360 alloc] initWithDelegate:self];
}
- 检查完成或被用户取消后,Record360ViewController的委托方法之一将被调用。
- (void)onInspectionComplete;
- (void)onInspectionCanceled;
- 如果检查正在上传中,实现Record360Delegate协议中指定的回调。当Record360对象完成上传检查时,Record360Delegate方法之一将被调用。
- (void)onInspectionUploadedForReferenceNumber:(nonnull NSString *)referenceNumber;
- (void)onInspectionUploadFailedForReferenceNumber:(nonnull NSString *)referenceNumber withError:(nonnull NSError *)error;
- (void)onInspectionUploadDeletedForReferenceNumber:(nonnull NSString *)referenceNumber;
Record360 Class
该对象处理检查上传。如果有剩余尚未处理的检查,您创建的实例将在在线时处理它们。
使用下面的init方法创建Record360类
- (nonnull Record360 *)initWithDelegate:(nullable id <Record360Delegate>)delegate;
获取/设置以下属性以设置上传模式。选项包括在线、离线或仅wifi。在仅wifi模式下,当可用的wifi网络时,检查将上传。
@property (nonatomic, assign) UploadMode uploadMode;
下面的方法返回准备上传的检查数量。正在上传过程中的检查将包括在内。
- (NSUInteger)getInspectionsReadyForUploadCount;
使用下面的方法手动开始上传检查
- (void)startUploading;
使用下面的方法手动停止上传检查
- (void)stopUploading;
使用下面的方法在传入的UIViewController上显示进度对话框UI
- (void)showProgressDialogOnViewController:(nonnull UIViewController *)rootViewController onControllerClose:(nullable void (^)(void))onClose;
Record360Delegate
使用这些委托方法来响应各种检查上传事件
- (void)onInspectionUploadedForReferenceNumber:(nonnull NSString *)referenceNumber;
- (void)onInspectionUploadFailedForReferenceNumber:(nonnull NSString *)referenceNumber withError:(nonnull NSError *)error;
- (void)onInspectionUploadDeletedForReferenceNumber:(nonnull NSString *)referenceNumber;
@optional
- (void)onUploadBytesComplete:(long long)bytesComplete ofTotal:(long long)bytesTotal forReferenceNumber:(nonnull NSString *)referenceNumber;
Record360ViewController Class
使用以下工厂方法之一来创建进入并显示工作流程的Record360ViewController对象。
这些方法允许用户指定自己的参考编号
+ (Record360ViewController *)loadControllerLoginAndSendTo:(Record360 *)record360 withReferenceNumber:(nullable NSString *)referenceNumber workOrderId:(NSNumber *)workOrderId workOrderLabel:(NSString *)workOrderLabel displayOn:(UIViewController *)rootViewController showCancelButton:(BOOL)showCancel withLoginUsername:(nullable NSString *)username;
+ (Record360ViewController *)loadControllerWithUserName:(NSString *)userName andPassword:(NSString *)password andReferenceNumber:(nullable NSString *)referenceNumber workOrderId:(nullable NSNumber *)workOrderId workOrderLabel:(nullable NSString *)workOrderLabel sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithUserToken:(NSString *)userToken andReferenceNumber:(nullable NSString *)referenceNumber workOrderId:(nullable NSNumber *)workOrderId workOrderLabel:(nullable NSString *)workOrderLabel sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithUserToken:(NSString *)userToken andUserId:(NSString *)userId andReferenceNumber:(nullable NSString *)referenceNumber workOrderId:(nullable NSNumber *)workOrderId workOrderLabel:(nullable NSString *)workOrderLabel sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithUserToken:(NSString *)userToken userId:(NSString *)userId referenceNumber:(nullable NSString *)referenceNumber workOrderId:(nullable NSNumber *)workOrderId workOrderLabel:(nullable NSString *)workOrderLabel andIsOneTimeLink:(BOOL)isOneTimeUseLink sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
这些方法自动插入参考编号
+ (Record360ViewController *)loadControllerLoginAndSendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController showCancelButton:(BOOL)showCancel withLoginUsername:(nullable NSString *)username;
+ (Record360ViewController *)loadControllerLoginAndSendTo:(Record360 *)record360 withTaskId:(NSString *)taskId displayOn:(UIViewController *)rootViewController showCancelButton:(BOOL)showCancel withLoginUsername:(nullable NSString *)username;
+ (Record360ViewController *)loadControllerWithUserName:(NSString *)userName andPassword:(NSString *)password sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithUserName:(NSString *)userName andPassword:(NSString *)password andTaskId:(NSString *)taskId sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithUserToken:(NSString *)userToken andUserId:(NSString *)userId sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithUserToken:(NSString *)userToken andUserId:(nullable NSString *)userId andTaskId:(NSString *)taskId sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController;
+ (Record360ViewController *)loadControllerWithRefreshToken:(NSString *)authToken sendTo:(Record360 *)record360 displayOn:(UIViewController *)rootViewController success:(void (^)(void))success failure:(void (^)(RefreshTokenError refreshErrorCode))failure;
从具有 loadControllerLoginAndSendTo
标签的工厂方法开始,使用上述方法使SDK在进入工作流程之前显示登录UI。 Record360
对象将上传结果检查。将使用 rootViewController
来显示视图。
使用以下方法之一来配置Record360ViewController对象以修改工作流程。其中一些设置为预设,而其他可自定义。更多详细信息请参阅下面的Record360Setting部分。
- (void)applySettings:(nonnull NSArray<Record360Setting *> *)settings;
- (void)applyDefaultSettings:(nonnull NSArray<Record360Setting *> *)settings;
设置是否在工作流程进入时显示帮助屏幕。默认为false。
- (void)setShowOnboarding:(BOOL)showOnboarding;
Record360ViewControllerDelegate
实现这些代理回调以挂钩到工作流程过程中
- (void)onInspectionComplete;
- (void)onInspectionCanceled;
@optional
- (nonnull NSArray<Record360FieldData *> *)onReferenceNumberEntered:(nonnull NSString *)referenceNumber fieldData:(nonnull NSArray<Record360FieldData *> *)fieldData;
- (nonnull NSArray<Record360FieldData *> *)onContractFieldData:(nonnull NSArray<Record360FieldData *> *)fieldData;
- (void)onSuccessfulAuthenticationWithToken:(nonnull NSString *)userToken andUserId:(nonnull NSString *)userId;
- (void)onFailedAuthentication:(nonnull NSError *)error;
使用以下代理回调方法将自定义字段数据推入工作流程过程中。这些数据将填充工作流程中指定表格的表格。在示例项目中还包含了几种向表格提供数据的方法。
- (nonnull NSArray<Record360FieldData *> *)onReferenceNumberEntered:(nonnull NSString *)referenceNumber fieldData:(nonnull NSArray<Record360FieldData *> *)fieldData;
Record360Setting
使用以下任一init方法来创建可以用于修改工作流程的Record360Setting实例。使用一个设置常量和适当的init方法作为一个设置键。示例项目中包含各种设置配置。
- (instancetype)initSetting:(nonnull NSString *)settingKey;
- (instancetype)initSetting:(nonnull NSString *)settingKey label:(nonnull NSString *)label;
- (instancetype)initSetting:(nonnull NSString *)settingKey canDisplay:(BOOL)canDisplay;
- (instancetype)initSetting:(nonnull NSString *)settingKey label:(nonnull NSString *)label canDisplay:(BOOL)canDisplay;
- (instancetype)initSetting:(nonnull NSString *)settingKey label:(nonnull NSString *)label link:(nonnull NSString *)link;
- (instancetype)initSetting:(nonnull NSString *)settingKey label:(nonnull NSString *)label recipient:(nonnull NSString *)recipient title:(nonnull NSString *)title;
- (instancetype)initOptionSetting:(nonnull NSString *)settingKey value:(nonnull NSString *)value;
- (instancetype)initOptionSetting:(nonnull NSString *)settingKey canDisplay:(BOOL)canDisplay value:(nonnull NSString *)value;
- (instancetype)initSwitchSetting:(nonnull NSString *)settingKey value:(BOOL)value;
- (instancetype)initSwitchSetting:(nonnull NSString *)settingKey canDisplay:(BOOL)canDisplay value:(BOOL)value;
以下是一个设置和其可能的值的列表
// Setting
extern NSString * const SETTING_UPLOAD_MODE;
// Possible values
extern NSString * const UPLOAD_MODE_ONLINE;
extern NSString * const UPLOAD_MODE_WIFI_ONLY;
extern NSString * const UPLOAD_MODE_OFFLINE;
// Setting
extern NSString * const SETTING_RESOLUTION;
// Possible values
extern NSString * const RESOLUTION_MEDIUM;
extern NSString * const RESOLUTION_HIGH;
extern NSString * const RESOLUTION_VERY_HIGH;
// On/Off switch settings
extern NSString * const SETTING_NATIVE_PHOTO_MODE;
extern NSString * const SETTING_NOTATIONS_ON_IMAGES;
extern NSString * const SETTING_VIN_SCAN;
extern NSString * const SETTING_REMEMBER_LOGIN;
extern NSString * const SETTING_ADD_TIMESTAMP_TO_MEDIA;
// Other settings
extern NSString * const SETTING_ACCOUNT;
extern NSString * const SETTING_LOGOUT;
extern NSString * const SETTING_VERSION;
extern NSString * const SETTING_SHOW_INTRO_VIDEO;
extern NSString * const SETTING_SEND_SUPPORT_LOG;
extern NSString * const SETTING_RATE_RECORD360;
extern NSString * const SETTING_LINKS;
extern NSString * const SETTING_SEND_EMAIL;
有问题?
Alexis Valencia – [email protected]
Tobin Pomeroy –__cf_email__" data-cfemail="">[email protected]
访问我们的网站www.record360.com/business
许可证
有关Record360SDK许可证的更多信息,请参阅LICENSE文件。