-
Notifications
You must be signed in to change notification settings - Fork 11
GoFIT SDK iOS Application Programming Interface Specifications
The present document specifies the base version
of GoFIT SDK - iOS Application Programming Interfaces (API's).
- 裝置 (Device)
- 本 SDK 之目標物、連接對象;為手錶、手環。
- API's
- Application Programming Interfaces.
- Particularly, in the present document,
API's
(Application Programming Interfaces
) 特指 function / method 等可呼叫之類型的介面
- Data Object
- 在 API's 之外,還有其所關聯到的資料物件,或資料結構。In the present document, they are called Data Object (s). 為 data model.
- 健康資料 (Fitness Data)
- 即裝置 (device) 內監測使用者活動所儲存下來之資料。一般而言,包括步數、距離、卡路里、心率、睡眠等等.
- 以 Fitness Data Objects (其下分成三種 Data Objects) 來呈現
- SDK vs. Client
- SDK 指的即為本文件所描述的程式套件
- Client 特指使用本文件所描述的程式套件之客戶端 (i.e., 本 SDK 的 user / caller)
本 SDK 以 Singleton Pattern 形式呈現並提供所需服務 / 功能. 各 method 若有 callback 者, 則在 callback 完成前, 都不允許再次呼叫 (本 SDK 非 reentrant, 非 multi-threaded 使用).
-
+ (GoFIT_SDK*)shareInstance;
- 功能
- 取得 GoFIT SDK singleton
- 功能
-
- (void)instantiate:(NSString*)certificate andLicense:(NSString*)license success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 建構 GoFIT SDK singleton instance
- 參數
- certificate : GOLiFE offered certificate (sequence of bytes); mandatory.
- license : License (sequence of bytes). Will download license from GOLiFE server (i.e., AAA procedure will be executed, and authorized license, if passed, will be returned via success() callback) in case this parameter is null. Client shall store received license -- otherwise this license download operation will occur each time this singleton is initiated (and thus network is required every time). 另一種情況是 license 雖不為 null,但已過期,則此時 SDK 本身也會重新向 server 進行 renewal 程序,若成功也會帶回新的 SDK License 給 Client 儲存。
- (callback) success : 表示成功,回傳 ResponseInfo
- responseObject: 若不為 null,則帶著更新的 SDK License (型態是 `<NSString*>) 傳回給 Client 儲存。
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 601 (DEVICE_NETWORK_NOT_ENABLE),手機網路未開啟
- code = 621 (SDK_AUTHENICATION_FAIL),授權失敗
- Cause
- 功能
-
- (void)doScanDevice:(void (^)(NSDictionary* device))success completion:(void (^)(ResponseInfo *resp))completion failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 掃瞄裝置
- 參數
- (callback) success : 會不斷更新,每掃描到一個新的 device 即 callback 帶回一個
<NSDictionary>
of<key> : <value>
pair where :-
UUID :
objectForKey:@"UUID"
-
productID :
objectForKey:@"productID"
-
UUID :
- (callback) completion : 掃描完成,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示掃瞄完成,並帶回一個 array of devices 於 responseObject 內
-
responseObject :
<NSDictionary>
of<key> : <value>
pair where :-
UUID :
objectForKey:@"UUID"
-
productID :
objectForKey:@"productID"
-
UUID :
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- Cause
- (callback) success : 會不斷更新,每掃描到一個新的 device 即 callback 帶回一個
- Timeout : 10 秒 (10 秒後回傳 scan 結果)
- 功能
-
- (void)doNewPairing:(NSString*)uuidStr andProductID:(NSString*)productID success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 新配對裝置,不帶有配對碼的連線機制
- 參數
- uuidStr : 欲連線裝置之 UUID。必須為之前透過 Scan Device 所回傳者。
- productID : 欲連線裝置之 Product ID。必須為之前透過 Scan Device 所回傳者,且與當時回傳之 UUID 成對 (即此時傳入之上述 uuidStr)。
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示連接成功,回傳一組配對資訊
- responseObject :
<NSDictionary>
of<key> : <value>
pair where :-
pairingCode :
objectForKey:@"pairingCode"
,為一 NSString object,帶著裝置螢幕顯示之四位字元 (ASCI value 0x30 ~ 0x39。字串的字元依序為裝置上顯示之順序)。 -
pairingTime :
objectForKey:@"pairingTime"
,為一 NSString object,配對碼於裝置上生成的時間 (裝置螢幕不顯示)
-
pairingCode :
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- Cause
- Timeout : 5 秒 (若 5 秒內連不上目標裝置,則 callback fail)
- 功能
-
- (void)confirmPairingCode:(NSString*)pairingCode andPairingTime:(NSString*)pairingTime andProductID:(NSString*)productID success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 確認輸入的配對碼,完成裝置配對機制
- 參數
- pairingCode : 輸入裝置螢幕顯示之四字元配對碼
-
pairingTime : 於上述 New Pairing Device 之
success
callback 取得之 pairingTime - productID : 欲連線裝置之 Product ID。必須為之前透過 Scan Device 所回傳者,且與當時回傳之 UUID 成對。此參數之值應亦等同於呼叫 New Pairing Device 時所傳入者。
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示配對成功,連接好裝置
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置斷線
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- Cause
- Timeout : 5 秒 (若 5 秒內連不上目標裝置,則 callback fail)
- 功能
-
- (void)doBondingANCS:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 綁定 ANCS (Apple Notification Center Service)。綁定成功後,裝置的
訊息通知
與遙控拍照 (Care-Xc、Care-Xe 支援)
功能才會正常運作 - 請於配對成功後,再呼叫此 API 進行 ANCS 綁定
- 綁定 ANCS (Apple Notification Center Service)。綁定成功後,裝置的
- 參數
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示綁定成功
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置斷線
- code = 614 (DEVICE_API_NOT_SUPPORT),裝置不支援此 API
- Cause
- (callback) success : 表示成功,回傳 ResponseInfo
- Timeout : 5 秒 (若 5 秒內連不上目標裝置,則 callback fail)
- 功能
-
- (void)doConnectDevice:(NSString*)uuidStr andProductID:(NSString*)productID andPairingCode:(NSString*)pairingCode andPairingTime:(NSString*)pairingTime success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 帶有配對碼的連線機制,適合已配對過的裝置
- 傳入裝置之
UUID
與pairingCode
、pairingTime
以連接裝置 - 此 API 會連帶執行手環時間校正功能
- 參數
- uuidStr : 裝置之 UUID. 可為 null, 但將較為耗時, 請於為了無痛跨系統 (手機; e.g., Android ⇒ iOS) 時使用
- productID : 欲連線裝置之 Product ID。必須為之前透過 Scan Device 所回傳者,且與當時回傳之 UUID 成對 (即此時傳入之上述 uuidStr)。
- pairingCode : 裝置配對碼
- pairingTime : 裝置配對時間戳記
-
(callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示連接成功
-
(callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- Cause
- Timeout : 5 秒 (若 5 秒內連不上目標裝置,則 callback fail)
- 功能
-
- (void)doSyncFitnessData:(void (^)(int progressValue))progress success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 同步手環上所有健康資料
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- 參數
- (callback) progress : 表示目前 sync 進度 (單純為一累進數值; 無)
- (callback) success : 表示成功,回傳 ResponseInfo,其中 :
-
responseObject :
<NSDictionary>
of<key> : <value>
pair where :-
Step Data
:objectForKey:@"stepArray"
Array ofStep Fitness Data Object
s -
Sleep Data
:objectForKey:@"sleepArray"
Array ofSleep Fitness Data Object
s -
Heart Rate Data
:objectForKey:@"hrArray"
Array ofHeart Rate Fitness Data Object
s
-
-
responseObject :
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置未連線
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- code = 602 (SYNC_IS_ALREADY_START),先前同步的裝置尚未完成,無法再執行一次同步 (本 SDK 不支援 reentrancy 機制)
- Cause
- Timeout : 15 秒 (若裝置無回應,15 秒後會 callback fail)
- 功能
-
- (void)doSetSetting:(NSArray*)settings success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 設定手環功能
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- 參數
- settings : Array (variable length) carrying selected object types defined in
Setting Object
- 本
settings
array 內只需填入欲設定的 setting objects
- 本
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示設定成功
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置未連線
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- code = 18 (BLE_SETTING_FORMAT_ERROR),設定格式錯誤
- code = 602 (SYNC_IS_ALREADY_START),先前同步的裝置尚未完成,無法執行設定 (本 SDK 不支援 reentrancy 機制)
- Cause
- settings : Array (variable length) carrying selected object types defined in
- Timeout : 15 秒 (若裝置無回應,15 秒後會 callback fail)
- 功能
-
- (void)doClearDeviceData:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 清除裝置內之健康資料 (通常用在已經與裝置 / 手環完成 資料同步 (Get Fitness Data)
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- 參數
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示清除成功
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置未連線
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- code = 602 (SYNC_IS_ALREADY_START),先前同步的裝置尚未完成,無法執行此指令 (本 SDK 不支援 reentrancy 機制)
- Cause
- (callback) success : 表示成功,回傳 ResponseInfo
- Timeout : 15 秒 (若裝置無回應,15秒後會 callback fail)
- 功能
-
- (void)doInitialDevice:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 初始化裝置內之資料
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- 參數
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示清除成功
- (callback) failure : 表示失敗,回傳 ResponseInfo
- Cause
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置未連線
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- code = 602 (SYNC_IS_ALREADY_START),先前同步的裝置尚未完成,無法執行此指令 (本 SDK 不支援 reentrancy 機制)
- Cause
- (callback) success : 表示成功,回傳 ResponseInfo
- Timeout : 15 秒 (若裝置無回應,15秒後會 callback fail)
- 功能
-
- (void)doDFU:(void (^)(int progressValue))progress success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 升級手環韌體
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- Callback
- progress : 目前 DFU 的進度 (百分比)
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示清除成功
- (callback) failure : 表示失敗,回傳 ResponseInfo
- 可能失敗原因
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置未連線
- code = 14 (DEVICE_PAIRING_FAIL),裝置配對碼匹配錯誤
- code = 20 (DFU_APP_MODE_ERROR),DFU 過程中發生錯誤
- code = 602 (SYNC_IS_ALREADY_START),先前同步的手環尚未完成,無法執行此指令 (本 SDK 不支援 reentrancy 機制)
- 可能失敗原因
- Timeout : 30 秒 (若裝置無回應,30秒後會 callback fail)
- 功能
-
@property (nonatomic,weak) FindMyPhoneHandler findMyPhoneHandler;
- 功能
- 裝置執行尋找手機時的 block handler,可在此 block 自行定義裝置執行尋找手機時的動作
- 目前僅支援裝置型號:
Care Xe
、Care Xc
- 範例
@property (nonatomic, strong) FindMyPhoneHandler findMyPhoneHandler; ... SDK_Instance.findMyPhoneHandler = self.findMyPhoneHandler; - (FindMyPhoneHandler)findMyPhoneHandler { // 自定義接收到尋找手機指令後之行為 ... return _findMyPhoneHandler; }
- 功能
-
- (void)doFindMyCare:(NSInteger)vibrationCount success:(void (^)(ResponseInfo *resp))success failure:(void (^)(ResponseInfo *resp))failure;
- 功能
- 尋找我的手環功能
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- 目前僅支援裝置型號:
Care Xe
、Care Xc
- Callback
- vibrationCount : 欲讓手環震動次數
- (callback) success : 表示成功,回傳 ResponseInfo
- code = 10 (BLE_CMD_OK),表示清除成功
- (callback) failure : 表示失敗,回傳 ResponseInfo
- 可能失敗原因
- code = 11 (BLE_NOT_ENABLE),手機藍牙未開啟
- code = 12 (BLE_CONNECT_FAIL),連接失敗,距離太遠或藍牙訊號太弱
- code = 13 (DEVICE_DISCONNECT),裝置未連線
- code = 602 (SYNC_IS_ALREADY_START),先前同步的手環尚未完成,無法執行此指令 (本 SDK 不支援 reentrancy 機制)
- code = 614 (DEVICE_API_NOT_SUPPORT),裝置不支援此 API
- 可能失敗原因
- Timeout : 5 秒 (若裝置無回應,30秒後會 callback fail)
- 功能
-
- (void)doDisconnectDevice;
- 功能
- 將目前連線之裝置斷線
- 功能
-
- (BOOL)isBLEConnect;
- 功能
- 確認裝置目前的連線狀態
- Return
- TRUE if connected; FALSE otherwise
- 功能
-
- (NSInteger)getDeviceBatteryValue;
- 功能
- 取得裝置電量
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- Return
- 電量 (為百分比)
- 功能
-
- (NSString*)getDeviceSN;
- 功能
- 取得裝置之序號
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- Return
- 裝置之序號
- 功能
-
- (NSString*)getDeviceMAC;
- 功能
- 取得裝置之 MAC Address
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- Return
- 裝置之 MAC address
- 功能
-
- (NSString*)getDeviceFWVersion;
- 功能
- 取得裝置之韌體版本
- 需要先呼叫 Connect Device API,連接成功後才能執行此 API
- Return
- 裝置之 firmware 版本
- 功能
-
- (void)reInitInstance;
- 功能
- 為避免一些例外情況造成 SDK instance 錯亂 (e.g., 防止 reentrant 的 lock 在異常狀態下沒有解開,造成下一個裝置無法進行連線同步),透過此方法可手動 re-inititalize SDK singleton instance
- 功能
-
typedef NS_ENUM(NSUInteger, E_RESPONSE_CODE) { // Reserverd HTTP_REQUEST_FAIL = 0, // Http request fail // BLE BLE_CMD_OK = 10, // BLE command OK BLE_NOT_ENABLE, // BLE not enable BLE_CONNECT_FAIL, // BLE connect fail DEVICE_DISCONNECT, // Device disconnect DEVICE_PAIRING_FAIL, // Pairing fail DEVICE_PAIRING_CODE_NOT_FOUND, // Pairing code not found, do new pairing first DEVICE_ALREADY_PAIRED, // Device already paired, forget device first DEVICE_RELEASE_PAIR_FAIL, // Release pair fail BLE_SETTING_FORMAT_ERROR, // Setting format error DEVICE_NOT_SUPPORT_JUMP_BOOTLOADER, // Device is not support jumping to bootloader DFU_APP_MODE_ERROR, // DFU with App mode error MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED, // Message type non existent or not implemented PAIRING_NEEDED, // Pairing needed AUTHORIZATION_NEEDED, // Authorization needed ANCS_BONDING_FAIL, // ANCS bonding fail START_TRANSMISSION_FAIL, // GoWatch Start transmission fail GET_ACTIVITY_SUMMARY_FAIL, // GoWatch Get activity summary fail GET_NMEA_FAIL, // GoWatch Get NMEA fail DEVICE_NOT_FOUND, WRITE_COMMAND_TO_DEVICE_TIMEOUT, PAIRING_CODE_MISMATCH, DEVICE_FIRMWARE_UPDATE_FAILED, DEVICE_FIRMWARE_UPDATE_PROGRESSING, OTHER_DEVICE_SYNCING, // Cloud GOLiFE_RESULT_OK = 200, GOLiFE_RESULT_REDIRECTION_FOUND = 302, GOLiFE_RESULT_BAD_REQUEST = 400, GOLiFE_RESULT_UNAUTHORIZED = 401, GOLiFE_RESULT_FORBIDDEN = 403, GOLiFE_RESULT_NOT_FOUND = 404, GOLiFE_RESULT_CONFLICT = 409, GOLiFE_RESULT_SERVER_ERROR = 500, GOLiFE_RESULT_CONNECTION_ERROR = 520, // App USER_CANCEL = 600, // User operation cancelled DEVICE_NETWORK_NOT_ENABLE, // Device network is not enable DEVICE_NETWORK_SUPPORT_ONLY_WIFI, // Only support WiFi enviorment EMAIL_NOT_VALID, // Email format is not valid PASSWORD_NOT_ENOUGH, // Password less than 8 characters REGISTER_ACCOUNT_ALREADY_EXIST, // Register account already exist LOGIN_ACCOUNT_OR_PASSWORD_ERROR, // Login account or password error THIRD_PARTY_TYPE_ERROR, // Third party type error COMPONENT_INITIAL_ERROR, // Component initial error PARSER_DATA_ERROR, // Parsing data error GET_EXCEPTION, // Get exception WECHAT_APP_DO_NOT_EXIST, // Wechat App not exist SOURCE_TYPE_ERROR, // data source type error PASSWORD_NOT_THE_SAME, // Password is not the same DEVICE_API_NOT_SUPPORT, // Device API is not supported API_PARAMETER_ERROR, // API parameter error DATABASE_NO_AFFECT, SHARE_TO_QQ_NOT_SUPPORT_IMAGE_OBJECT, CANNOT_REGISTER_RECEIVER, WRITE_DATABASE_FAILED, SYNC_IS_ALREADY_START };
-
@interface ResponseInfo : NSObject @property (nonatomic, retain) NSNumber * responseCode; @property (nonatomic, retain) NSString * message; @property (nonatomic, retain) id responseObject; // for extensions @end
-
Step Fitness Data Object
@interface FitnessStep : NSObject @property (nonatomic, retain) NSNumber * timestamp; // Unix Time, i.e., number of seconds that have elapsed since 00:00:00 UTC time, 1 January 1970 @property (nonatomic, retain) NSNumber * distance; @property (nonatomic, retain) NSNumber * calories; @property (nonatomic, retain) NSNumber * steps; @end
-
Sleep Fitness Data Object
@interface FitnessSleep : NSObject @property (nonatomic, retain) NSNumber * timestamp; // Unix Time, i.e., number of seconds that have elapsed since 00:00:00 UTC time, 1 January 1970 @property (nonatomic, retain) NSNumber * score; @end
-
Heart Rate Fitness Data Object
@interface FitnessHR : NSObject @property (nonatomic, retain) NSNumber * timestamp; // Unix Time, i.e., number of seconds that have elapsed since 00:00:00 UTC time, 1 January 1970 @property (nonatomic, retain) NSNumber * pulse; @end
-
SpO2 Fitness Data Object
@interface FitnessSpO2 : NSObject @property (nonatomic, retain) NSNumber * timestamp; // Unix Time, i.e., number of seconds that have elapsed since 00:00:00 UTC time, 1 January 1970 @property (nonatomic, retain) NSNumber * spo2; @end
-
Activity Fitness Data Object
@interface FitnessActivity : NSObject @property (nonatomic, retain) NSString * timezone; @property (nonatomic, retain) id stats; @property (nonatomic, retain) NSNumber * typeID; @property (nonatomic, retain) id gpsData; @property (nonatomic, retain) id lapStatsData; @property (nonatomic, retain) NSString * sourceName; @property (nonatomic, retain) NSNumber * startRecordTime; @property (nonatomic, retain) NSNumber * nmeaVer; @end
- GPS Data Object
NSMutableDictionary *gpsData = [NSMutableDictionary dictionary]; [gpsData setValue:[NSNumber numberWithInteger:valid] forKey:@"valid"]; [gpsData setValue:[NSNumber numberWithDouble:longitude] forKey:@"x"]; [gpsData setValue:[NSNumber numberWithDouble:latitude] forKey:@"y"]; [gpsData setValue:[NSNumber numberWithInteger:200] forKey:@"type"]; [gpsData setValue:[NSNumber numberWithInteger:time] forKey:@"timestamp"]; [gpsData setValue:[NSNumber numberWithFloat:speed] forKey:@"speed"]; [gpsData setValue:[NSNumber numberWithFloat:altitude] forKey:@"elevation"]; [gpsData setValue:[NSNumber numberWithFloat:cumulativeDistance] forKey:@"accumulatedDistance"]; [gpsData setValue:[NSNumber numberWithInteger:cumulativeTime] forKey:@"accumulatedDuration"]; [gpsData setValue:[NSNumber numberWithInteger:heart] forKey:@"heartRate"]; [gpsData setValue:[NSNumber numberWithInteger:cumulativeSteps] forKey:@"gsensorX"]; [gpsData setValue:[NSNumber numberWithInteger:0] forKey:@"gsensorY"]; [gpsData setValue:[NSNumber numberWithInteger:0] forKey:@"gsensorZ"]; [gpsData setValue:[NSNumber numberWithInteger:flag] forKey:@"flag"]; [gpsData setValue:[NSNumber numberWithInteger:(IEI >= 0xF5) ? IEI : lap] forKey:@"lap"]; [gpsData setValue:[NSNumber numberWithFloat:bikeSpeed] forKey:@"ecomposs"]; [gpsData setValue:[NSNumber numberWithInteger:cadence] forKey:@"heading"];
- Lap Data Object
NSMutableDictionary *lapInfo = [NSMutableDictionary dictionary]; [lapInfo setValue:strStartTime forKey:@"startTime"]; [lapInfo setValue:[NSString stringWithFormat:@"%lf", avgSpeed] forKey:@"speed"]; [lapInfo setValue:[NSString stringWithFormat:@"%ld", (long)duration] forKey:@"duration"]; [lapInfo setValue:[NSString stringWithFormat:@"%lf", distance] forKey:@"distance"]; [lapInfo setValue:[NSString stringWithFormat:@"%ld", (long)avgHR] forKey:@"avgHeartbeats"]; [lapInfo setValue:[NSString stringWithFormat:@"%lf", calories] forKey:@"calories"]; [lapInfo setValue:[NSString stringWithFormat:@"%ld", (long)steps] forKey:@"steps"]; [lapInfo setValue:[NSString stringWithFormat:@"%ld", (long)avgStepCadence] forKey:@"avgStepCadence"]; [lapInfo setValue:[NSString stringWithFormat:@"%ld", (long)maxStepCadence] forKey:@"highStepCadence"];
-
User Profile Settings Data Object
@interface DeviceSettingUserProfile : NSObject @property (nonatomic) CGFloat height; // cm @property (nonatomic) CGFloat weight; // kg @property (nonatomic) NSUInteger age; // 0 ~ 99 @property (nonatomic) CGFloat stride; // cm @property (nonatomic, retain) NSString * birthday; // yyyy-MM-dd @property (nonatomic) NSUInteger gender; // 0 : male, 1 :female @end
-
Step Goal Settings Data Object
@interface DeviceSettingStepGoal : NSObject @property (nonatomic) NSUInteger stepGoal; @end
-
System Unit Settings Data Object
@interface DeviceSettingSystemUnit : NSObject @property (nonatomic, retain) NSString * systemUnit; // metric | imperial @end
-
Time Format Settings Data Object
@interface DeviceSettingTimeFormat : NSObject @property (nonatomic, retain) NSString * timeFormat; // 12 | 24 @end
-
Wear Handedness Settings Data Object
@interface DeviceSettingHandedness : NSObject @property (nonatomic, retain) NSString * handedness; // left | right @end
-
Auto Light Up Settings Data Object
@interface DeviceSettingAutoLightUp : NSObject @property (nonatomic) BOOL enable; @end
-
Disconnect Alert Settings Data Object
@interface DeviceSettingDisconnectAlert : NSObject @property (nonatomic) BOOL enable; @end
-
Idle Alert Settings Data Object
@interface DeviceSettingIdleAlert : NSObject @property (nonatomic) BOOL enable; @property (nonatomic) NSInteger repeatDays; // bit0 : Sun // bit1 : Mon // bit2 : Tue // bit3 : Wed // bit4 : Thu // bit5 : Fri // bit6 : Sat @property (nonatomic, retain) NSString * startTimeHHMM; // 00:00 ~ 23:59 @property (nonatomic, retain) NSString * endTimeHHMM; // 00:00 ~ 23:59 @property (nonatomic) NSInteger intervalMin; // minutes @end
-
Alarm Clock Settings Data Object
@interface DeviceSettingAlarms : NSObject @property (nonatomic) BOOL enable; @property (nonatomic) NSInteger clockID; @property (nonatomic) NSInteger category; // 0 : wake up // 1 : sleep // 2 : meeting // 3 : training // 4 : dating // 5 : party // 6 : others // 7 : medicine @property (nonatomic) NSInteger repeatDays; // bit0 : Sun // bit1 : Mon // bit2 : Tue // bit3 : Wed // bit4 : Thu // bit5 : Fri // bit6 : Sat @property (nonatomic, retain) NSString * alarmEnableDate; // YYYY-MM-dd @property (nonatomic, retain) NSString * alarmTimeHHMM; // HH:mm @property (nonatomic) BOOL isActive; @property (nonatomic, retain) NSString * alarmText; @end
-
Detecting Heart Rate by Interval Settings Data Object
@interface DeviceSettingTimingDetectHR : NSObject @property (nonatomic) BOOL enable; @property (nonatomic, retain) NSString * startTimeHHMM; // 00:00 ~ 23:59 @property (nonatomic, retain) NSString * endTimeHHMM; // 00:00 ~ 23:59 @property (nonatomic) NSInteger intervalMin; // minutes @property (nonatomic) NSInteger repeatDays; // useless @end
-
Do Not Disturb Settings Data Object
@interface DeviceSettingDND : NSObject @property (nonatomic) BOOL enable; @property (nonatomic, retain) NSString * startTimeHHMM; // 00:00 ~ 23:59 @property (nonatomic, retain) NSString * endTimeHHMM; // 00:00 ~ 23:59 @property (nonatomic) NSInteger repeatDays; // useless @end
-
Display Language Settings Data Object
@interface DeviceSettingLanguage : NSObject @property (nonatomic) NSUInteger language; // 0 : TW // 1 : CN // 2 : EN // 3 : JP @end
-
Find My Band Settings Data Object
@interface DeviceSettingFindMyCare : NSObject @property (nonatomic) BOOL vibrationOnOff; @property (nonatomic) NSInteger vibrationSecond; @property (nonatomic) BOOL vibrationRepeat; @end
-
Find My Phone Settings Data Object
@interface DeviceSettingFindMyPhone : NSObject @property (nonatomic) BOOL enable; @property (nonatomic) NSInteger vibrationTime; @property (nonatomic) BOOL soundOnOff; @end
-
Heart Rate Warning Settings Data Object
@interface DeviceSettingHRWarning : NSObject @property (nonatomic) BOOL enable; @property (nonatomic) NSInteger maxValue; @property (nonatomic) NSInteger minValue; @end
-
Screen Lock Settings Data Object
@interface DeviceSettingHorizontalUnlock : NSObject @property (nonatomic) BOOL enable; @end
-
Step Fitness Data
Step Record : { timestamp : 1529924400 // UTC time : 2018, Jun, 25 11:00:00 GMT+00:00 steps : 129 // step counts distance : 102 // distance, unit : m calories : 7 // unit : 大卡 } Step Record : { timestamp : 1529925600 steps : 467 distance : 369 calories : 23 } Step Record : { timestamp : 1529926800 steps : 27 distance : 21 calories : 2 }
-
Heart Rate Fitness Data
HR Record : { timestamp : 1530006834 // UTC time : 2018, Jun, 26 09:53:54 GMT+00:00 pulse : 84 // Heart Rate counts } HR Record : { timestamp : 1530006844 pulse : 83 } HR Record : { timestamp : 1530006868 pulse : 81 }
-
Sleep Fitness Data
Sleep Record : { timestamp : 1529938800 // UTC time : 2018, Jun, 25 15:00:00 GMT+00:00 score : 5 // 睡眠分數:0~5,0為深眠,5為淺眠 } Sleep Record : { timestamp : 1529939400 score : 3 } Sleep Record : { timestamp : 1529940000 score : 1 }