Kii Cloud SDK は、Thing に関する属性を管理するための既定フィールドを定義しています。開発者は、これらに加えてカスタムフィールドを追加できます(これらフィールドの概要については Thing 管理 をご覧ください)。
既定フィールドの操作
Kii Cloud SDK は、以下の情報を管理するための既定フィールドを定義しています(設定可能なフィールドについて詳しくは、Thing の登録 をご覧ください)。
Thing のベンダーが割り当てた ID
パスワード
タイプ
ベンダー名
ファームウェアバージョン
プロダクト名
ロット番号
予約済みの文字列フィールド
予約済みの数字フィールド
オンラインステータス(読み取り専用)
オンラインステータスの最終更新日時(読み取り専用)
これら既定フィールド(Thing ベンダーが割り当てた ID およびパスワードを除く)の操作は KiiThing
が提供するメソッドで行います。
既定フィールドの設定・変更
既定フィールドを設定・変更する例を以下に挙げます。なお、1 回設定した既定フィールドは削除できません。
Android
try {
// Instantiate a thing by vendor thing ID.
KiiThing thing = KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" );
// Set predefined fields.
thing . setThingType ( "GPS" );
thing . setVendor ( "Kii Corporation" );
thing . setFirmwareVersion ( "1.01" );
thing . setProductName ( "Kii Cloud" );
thing . setLot ( "KII20140711-AB-002134D" );
thing . setStringField1 ( "S001" );
thing . setStringField2 ( "S002" );
thing . setStringField3 ( "S003" );
thing . setStringField4 ( "S004" );
thing . setStringField5 ( "S005" );
thing . setNumberField1 ( 101L );
thing . setNumberField2 ( 102L );
thing . setNumberField3 ( 103L );
thing . setNumberField4 ( 104L );
thing . setNumberField5 ( 105L );
// Update the thing.
thing . update ();
} catch ( AppException e ) {
// Handle the error.
} catch ( IOException e ) {
// Handle the error.
}
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , new KiiCallback < KiiThing >() {
@Override
public void onComplete ( KiiThing result , Exception e ) {
if ( e != null ) {
// Handle the error.
return ;
}
// Set predefined fields.
result . setThingType ( "GPS" );
result . setVendor ( "Kii Corporation" );
result . setFirmwareVersion ( "1.01" );
result . setProductName ( "Kii Cloud" );
result . setLot ( "KII20140711-AB-002134D" );
result . setStringField1 ( "S001" );
result . setStringField2 ( "S002" );
result . setStringField3 ( "S003" );
result . setStringField4 ( "S004" );
result . setStringField5 ( "S005" );
result . setNumberField1 ( 101L );
result . setNumberField2 ( 102L );
result . setNumberField3 ( 103L );
result . setNumberField4 ( 104L );
result . setNumberField5 ( 105L );
// Update the thing.
result . update ( new KiiCallback < KiiThing >() {
@Override
public void onComplete ( KiiThing target , Exception e ) {
if ( e != null ) {
// Handle the error.
return ;
}
}
});
}
});
iOS
Swift:
let thing : KiiThing
do {
// Instantiate a thing by vendor thing ID.
thing = try KiiThing . loadSynchronous ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" )
} catch ( let error as NSError ){
// Handle the error.
return
}
// Set predefined fields.
thing . thingType = "GPS"
thing . vendor = "Kii Corporation"
thing . firmwareVersion = "1.01"
thing . productName = "Kii Cloud"
thing . lot = "KII20140711-AB-002134D"
thing . stringField1 = "S001"
thing . stringField2 = "S002"
thing . stringField3 = "S003"
thing . stringField4 = "S004"
thing . stringField5 = "S005"
thing . numberField1 = 101
thing . numberField2 = 102
thing . numberField3 = 103
thing . numberField4 = 104
thing . numberField5 = 105
do {
// Update the thing.
try thing . updateSynchronous ()
} catch let error as NSError {
// Handle the error.
return
}
// Instantiate a thing by vendor thing ID.
KiiThing . load ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" ) { ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
// Set predefined fields.
thing !. thingType = "GPS"
thing !. vendor = "Kii Corporation"
thing !. firmwareVersion = "1.01"
thing !. productName = "Kii Cloud"
thing !. lot = "KII20140711-AB-002134D"
thing !. stringField1 = "S001"
thing !. stringField2 = "S002"
thing !. stringField3 = "S003"
thing !. stringField4 = "S004"
thing !. stringField5 = "S005"
thing !. numberField1 = 101
thing !. numberField2 = 102
thing !. numberField3 = 103
thing !. numberField4 = 104
thing !. numberField5 = 105
// Update the thing.
thing !. update ({ ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
})
}
Objective-C:
NSError * error = nil ;
// Instantiate a thing by vendor thing ID.
KiiThing * thing = [ KiiThing loadSynchronousWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Set predefined fields.
thing . thingType = @"GPS" ;
thing . vendor = @"Kii Corporation" ;
thing . firmwareVersion = @"1.01" ;
thing . productName = @"Kii Cloud" ;
thing . lot = @"KII20140711-AB-002134D" ;
thing . stringField1 = @"S001" ;
thing . stringField2 = @"S002" ;
thing . stringField3 = @"S003" ;
thing . stringField4 = @"S004" ;
thing . stringField5 = @"S005" ;
thing . numberField1 = @101 ;
thing . numberField2 = @102 ;
thing . numberField3 = @103 ;
thing . numberField4 = @104 ;
thing . numberField5 = @105 ;
// Update the thing.
[ thing updateSynchronous : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Instantiate a thing by vendor thing ID.
[ KiiThing loadWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
block : ^ ( KiiThing * thing , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
// Set predefined fields.
thing . thingType = @"GPS" ;
thing . vendor = @"Kii Corporation" ;
thing . firmwareVersion = @"1.01" ;
thing . productName = @"Kii Cloud" ;
thing . lot = @"KII20140711-AB-002134D" ;
thing . stringField1 = @"S001" ;
thing . stringField2 = @"S002" ;
thing . stringField3 = @"S003" ;
thing . stringField4 = @"S004" ;
thing . stringField5 = @"S005" ;
thing . numberField1 = @101 ;
thing . numberField2 = @102 ;
thing . numberField3 = @103 ;
thing . numberField4 = @104 ;
thing . numberField5 = @105 ;
// Update the thing.
[ thing update : ^ ( KiiThing * thing , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
}];
JavaScript
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , {
success : function ( thing ) {
// Prepare predefined fields.
var thingFields = {
_thingType : "GPS" ,
_vendor : "Kii Corporation" ,
_firmwareVersion : "1.01" ,
_productName : "Kii Cloud" ,
_lot : "KII20140711-AB-002134D" ,
_stringField1 : "S001" ,
_stringField2 : "S002" ,
_stringField3 : "S003" ,
_stringField4 : "S004" ,
_stringField5 : "S005" ,
_numberField1 : 101 ,
_numberField2 : 102 ,
_numberField3 : 103 ,
_numberField4 : 104 ,
_numberField5 : 105
};
// Set the predefined fields.
thing . fields = thingFields ;
// Update the thing.
thing . update ({
success : function ( theThing ) {
// Do something.
},
failure : function ( theThing , error ) {
// Handle the error.
}
});
},
failure : function ( error ) {
// Handle the error.
}
});
既定フィールドは、指定したフィールドのみが更新されます。リクエスト内で指定しなかったフィールドの値はそのままキープされます。なお、すでに存在するフィールドは削除できません。
既定フィールドの参照
既定フィールドを参照する例を以下に挙げます。
Android
try {
// Instantiate a thing by vendor thing ID.
KiiThing things = KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" );
// Get predefined fields.
String thingType = things . getThingType ();
String vendor = things . getVendor ();
String firmwareVersion = things . getFirmwareVersion ();
String productName = things . getProductName ();
String lot = things . getLot ();
String stringField1 = things . getStringField1 ();
String stringField2 = things . getStringField2 ();
String stringField3 = things . getStringField3 ();
String stringField4 = things . getStringField4 ();
String stringField5 = things . getStringField5 ();
Long numberField1 = things . getNumberField1 ();
Long numberField2 = things . getNumberField2 ();
Long numberField3 = things . getNumberField3 ();
Long numberField4 = things . getNumberField4 ();
Long numberField5 = things . getNumberField5 ();
Boolean online = things . isOnline ();
long statusModifiedAt = things . getOnlineStatusModifiedAt ();
} catch ( AppException e ) {
// Handle the error.
} catch ( IOException e ) {
// Handle the error.
}
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , new KiiCallback < KiiThing >() {
@Override
public void onComplete ( KiiThing result , Exception e ) {
if ( e != null ) {
// Handle the error.
return ;
}
// Get predefined fields.
String thingType = result . getThingType ();
String vendor = result . getVendor ();
String firmwareVersion = result . getFirmwareVersion ();
String productName = result . getProductName ();
String lot = result . getLot ();
String stringField1 = result . getStringField1 ();
String stringField2 = result . getStringField2 ();
String stringField3 = result . getStringField3 ();
String stringField4 = result . getStringField4 ();
String stringField5 = result . getStringField5 ();
Long numberField1 = result . getNumberField1 ();
Long numberField2 = result . getNumberField2 ();
Long numberField3 = result . getNumberField3 ();
Long numberField4 = result . getNumberField4 ();
Long numberField5 = result . getNumberField5 ();
Boolean online = result . isOnline ();
long statusModifiedAt = result . getOnlineStatusModifiedAt ();
}
});
iOS
Swift:
let thing : KiiThing
do {
// Instantiate a thing by vendor thing ID.
thing = try KiiThing . loadSynchronous ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" )
} catch ( let error as NSError ){
// Handle the error.
return
}
// Get predefined fields.
let thingType = thing . thingType
let vendor = thing . vendor
let firmwareVersion = thing . firmwareVersion
let productName = thing . productName
let lot = thing . lot
let stringField1 = thing . stringField1
let stringField2 = thing . stringField2
let stringField3 = thing . stringField3
let stringField4 = thing . stringField4
let stringField5 = thing . stringField5
let numberField1 = thing . numberField1
let numberField2 = thing . numberField2
let numberField3 = thing . numberField3
let numberField4 = thing . numberField4
let numberField5 = thing . numberField5
// Instantiate a thing by vendor thing ID.
KiiThing . load ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" ) { ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
// Get predefined fields.
let thingType = thing !. thingType
let vendor = thing !. vendor
let firmwareVersion = thing !. firmwareVersion
let productName = thing !. productName
let lot = thing !. lot
let stringField1 = thing !. stringField1
let stringField2 = thing !. stringField2
let stringField3 = thing !. stringField3
let stringField4 = thing !. stringField4
let stringField5 = thing !. stringField5
let numberField1 = thing !. numberField1
let numberField2 = thing !. numberField2
let numberField3 = thing !. numberField3
let numberField4 = thing !. numberField4
let numberField5 = thing !. numberField5
}
Objective-C:
NSError * error = nil ;
// Instantiate a thing by vendor thing ID.
KiiThing * thing = [ KiiThing loadSynchronousWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Get predefined fields.
NSString * thingType = thing . thingType ;
NSString * vendor = thing . vendor ;
NSString * firmwareVersion = thing . firmwareVersion ;
NSString * productName = thing . productName ;
NSString * lot = thing . lot ;
NSString * stringField1 = thing . stringField1 ;
NSString * stringField2 = thing . stringField2 ;
NSString * stringField3 = thing . stringField3 ;
NSString * stringField4 = thing . stringField4 ;
NSString * stringField5 = thing . stringField5 ;
NSNumber * numberField1 = thing . numberField1 ;
NSNumber * numberField2 = thing . numberField2 ;
NSNumber * numberField3 = thing . numberField3 ;
NSNumber * numberField4 = thing . numberField4 ;
NSNumber * numberField5 = thing . numberField5 ;
NSNUmber * online = thing . online ;
NSDate * onlineStatusModifiedAt = thing . onlineStatusModifiedAt ;
// Instantiate a thing by vendor thing ID.
[ KiiThing loadWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
block : ^ ( KiiThing * thing , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
// Get predefined fields.
NSString * thingType = thing . thingType ;
NSString * vendor = thing . vendor ;
NSString * firmwareVersion = thing . firmwareVersion ;
NSString * productName = thing . productName ;
NSString * lot = thing . lot ;
NSString * stringField1 = thing . stringField1 ;
NSString * stringField2 = thing . stringField2 ;
NSString * stringField3 = thing . stringField3 ;
NSString * stringField4 = thing . stringField4 ;
NSString * stringField5 = thing . stringField5 ;
NSNumber * numberField1 = thing . numberField1 ;
NSNumber * numberField2 = thing . numberField2 ;
NSNumber * numberField3 = thing . numberField3 ;
NSNumber * numberField4 = thing . numberField4 ;
NSNumber * numberField5 = thing . numberField5 ;
NSNUmber * online = thing . online ;
NSDate * onlineStatusModifiedAt = thing . onlineStatusModifiedAt ;
}];
JavaScript
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , {
success : function ( thing ) {
// Get predefined fields.
var thingType = thing . fields . _thingType ;
var vendor = thing . fields . _vendor ;
var firmwareVersion = thing . fields . _firmwareVersion ;
var productName = thing . fields . _productName ;
var lot = thing . fields . _lot ;
var stringField1 = thing . fields . _stringField1 ;
var stringField2 = thing . fields . _stringField2 ;
var stringField3 = thing . fields . _stringField3 ;
var stringField4 = thing . fields . _stringField4 ;
var stringField5 = thing . fields . _stringField5 ;
var numberField1 = thing . fields . _numberField1 ;
var numberField2 = thing . fields . _numberField2 ;
var numberField3 = thing . fields . _numberField3 ;
var numberField4 = thing . fields . _numberField4 ;
var numberField5 = thing . fields . _numberField5 ;
var online = thing . isOnline ();
var statusModifiedAt = thing . getOnlineStatusModifiedAt ();
},
failure : function ( error ) {
// Handle the error.
}
});
カスタムフィールドの操作
開発者は、上記の既定フィールドに加え、任意のフィールド(シリアルナンバー、国コード等)を追加できます。ただし、SDK により予約されているフィールド名は使用できません。
カスタムフィールドの設定・変更
カスタムフィールドを設定・変更する例を以下に挙げます。なお、1 回設定したカスタムフィールドは削除できません。
Android
try {
// Instantiate a thing by vendor thing ID.
KiiThing thing = KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" );
// Set a custom field.
thing . set ( "serial_number" , "K00001233214001" );
// Update the thing.
thing . update ();
} catch ( AppException e ) {
// Handle the error.
} catch ( IOException e ) {
// Handle the error.
}
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , new KiiCallback < KiiThing >() {
@Override
public void onComplete ( KiiThing result , Exception e ) {
if ( e != null ) {
// Handle the error.
return ;
}
// Set a custom field.
result . set ( "serial_number" , "K00001233214001" );
// Update the thing.
result . update ( new KiiCallback < KiiThing >() {
@Override
public void onComplete ( KiiThing target , Exception e ) {
if ( e != null ) {
// Handle the error.
return ;
}
}
});
}
});
iOS
Swift:
let thing : KiiThing
do {
// Instantiate a thing by vendor thing ID.
thing = try KiiThing . loadSynchronous ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" )
} catch ( let error as NSError ){
// Handle the error.
return
}
// Set a custom field.
thing . setObject ( "K00001233214001" , forKey : "serial_number" )
// Update the thing.
thing . update ({ ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
})
// Instantiate a thing by vendor thing ID.
KiiThing . load ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" ) { ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
// Set a custom field.
thing !. setObject ( "K00001233214001" , forKey : "serial_number" )
// Update the thing.
thing !. update ({ ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
})
}
Objective-C:
NSError * error = nil ;
// Instantiate a thing by vendor thing ID.
KiiThing * thing = [ KiiThing loadSynchronousWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Set a custom field.
[ thing setObject : @"K00001233214001" forKey : @"serial_number" ];
// Update the thing.
[ thing updateSynchronous : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Instantiate a thing by vendor thing ID.
[ KiiThing loadWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
block : ^ ( KiiThing * thing , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
// Set a custom field.
[ thing setObject : @"K00001233214001" forKey : @"serial_number" ];
// Update the thing.
[ thing update : ^ ( KiiThing * thing , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
}];
JavaScript
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , {
success : function ( thing ) {
// Set a custom field.
thing . fields . serial_number = "K00001233214001" ;
// Update the thing.
thing . update ({
success : function ( thing ) {
// Do something.
},
failure : function ( theThing , error ) {
// Handle the error.
}
});
},
failure : function ( error ) {
// Handle the error.
}
});
カスタムフィールドの参照
カスタムフィールドを参照する例を以下に挙げます。
Android
try {
// Instantiate a thing by vendor thing ID.
KiiThing things = KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" );
// Get custom fields.
int version = things . getInt ( "version" );
String serialNumber = things . getString ( "serialNumber" );
double accuracy = things . getDouble ( "accuracy" );
boolean isInitialized = things . getBoolean ( "isInitialized" );
} catch ( AppException e ) {
// Handle the error.
} catch ( IOException e ) {
// Handle the error.
}
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , new KiiCallback < KiiThing >() {
@Override
public void onComplete ( KiiThing result , Exception e ) {
if ( e != null ) {
// Handle the error.
return ;
}
// Get custom fields.
int version = result . getInt ( "version" );
String serialNumber = result . getString ( "serialNumber" );
double accuracy = result . getDouble ( "accuracy" );
boolean isInitialized = result . getBoolean ( "isInitialized" );
}
});
iOS
Swift:
let thing : KiiThing
do {
// Instantiate a thing by vendor thing ID.
thing = try KiiThing . loadSynchronous ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" )
} catch ( let error as NSError ){
// Handle the error.
return
}
// Get custom fields.
let serialNumber = thing . getForKey ( "serialNumber" ) as! String
let accuracy = thing . getForKey ( "accuracy" ) as! Double
let version = thing . getForKey ( "version" ) as! Int
let isInitialized = thing . getForKey ( "isInitialized" ) as! Bool
// Instantiate a thing by vendor thing ID.
KiiThing . load ( withVendorThingID : "rBnvSPOXBDF9r29GJeGS" ) { ( thing , error ) -> Void in
if error != nil {
// Handle the error.
return
}
// Get custom fields.
let serialNumber = thing !. getForKey ( "serialNumber" ) as! String
let accuracy = thing !. getForKey ( "accuracy" ) as! Double
let version = thing !. getForKey ( "version" ) as! Int
let isInitialized = thing !. getForKey ( "isInitialized" ) as! Bool
}
Objective-C:
NSError * error = nil ;
// Instantiate a thing by vendor thing ID.
KiiThing * thing = [ KiiThing loadSynchronousWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Get custom fields.
NSString * serialNumber = [ thing getObjectForKey : @"serialNumber" ];
double accuracy = [( NSNumber * )[ thing getObjectForKey : @"accuracy" ] doubleValue ];
int version = [( NSNumber * )[ thing getObjectForKey : @"version" ] intValue ];
BOOL isInitialized = [( NSNumber * )[ thing getObjectForKey : @"isInitialized" ] boolValue ];
// Instantiate a thing by vendor thing ID.
[ KiiThing loadWithVendorThingID : @"rBnvSPOXBDF9r29GJeGS"
block : ^ ( KiiThing * thing , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
// Get custom fields.
NSString * serialNumber = [ thing getObjectForKey : @"serialNumber" ];
double accuracy = [( NSNumber * )[ thing getObjectForKey : @"accuracy" ] doubleValue ];
int version = [( NSNumber * )[ thing getObjectForKey : @"version" ] intValue ];
BOOL isInitialized = [( NSNumber * )[ thing getObjectForKey : @"isInitialized" ] boolValue ];
}];
JavaScript
// Instantiate a thing by vendor thing ID.
KiiThing . loadWithVendorThingID ( "rBnvSPOXBDF9r29GJeGS" , {
success : function ( thing ) {
// Get custom fields.
var version = thing . fields . version ;
var serialNumber = thing . fields . serialNumber ;
var accuracy = thing . fields . accuracy ;
var isInitialized = thing . fields . isInitialized ;
},
failure : function ( error ) {
// Handle the error.
}
});