Este tema describe cómo inicializar Link SDK for iOS para establecer una conexión entre un dispositivo e IoT Platform.
Contexto
Link SDK for iOS solo admite el método de verificación de certificado único por dispositivo. Para obtener más información, consulte Unique-certificate-per-device verification.
Inicialice IoT Platform SDK for Java
Código de ejemplo:
#import <IotLinkKit/IotLinkKit.h>
// Before you initialize the SDK, you must create a listener to monitor the status changes of a persistent connection.
[[LinkKitEntry sharedKit] registerChannelListener:self];
//// Specify the device certificate information.
self.productKey = self.textFieldProductKey.text ;
self.deviceName = self.textFieldDeviceName.text ;
self.deviceSecret = self.textFieldDeviceSecret.text;
LinkkitChannelConfig * channelConfig = [[LinkkitChannelConfig alloc] init];
channelConfig.productKey = self.productKey;
channelConfig.deviceName = self.deviceName;
channelConfig.deviceSecret = self.deviceSecret;
channelConfig.cleanSession = (self.cleanSession == 1);
//channelConfig.server = @"your custom server url";
//channelConfig.port = 1883;
LinkkitSetupParams * setupParams = [[LinkkitSetupParams alloc] init];
setupParams.appVersion = self.appVersion;
setupParams.channelConfig = channelConfig;
[[LinkKitEntry sharedKit] setup:setupParams resultBlock:^(BOOL succeeded, NSError * _Nullable error) {
LinkkitLogDebug(@"setup error : %@", error);
dispatch_async(dispatch_get_main_queue(), ^{
[self ims_showHUDWithMessage:[NSString stringWithFormat:@ "Initialization :%@",
succeeded ? @ "Success" : @ "Failure"]];
});
}];
Después de inicializar el SDK, se devuelve
resultBlocksin importar si se estableció una conexión persistente de Message Queuing Telemetry Transport (MQTT).Llame a la función
[[LinkKitEntry sharedKit] registerChannelListener:self]para comprobar si se estableció una conexión persistente según el resultado que devuelve la función de callback[onConnectStateChange:state:].
Parámetros
Parámetro | Ejemplo | Descripción |
productKey | a18wP | Consulte el certificado del dispositivo en la página Device Details de la consola de IoT Platform. Para obtener más información, consulte Obtain device verification information. |
deviceName | LightSwitch | |
deviceSecret | uwMTmVAMnGGHaAkqmeDY6cHxxB | |
server | a18wP.iot-as-mqtt.cn-shanghai.aliyuncs.com | El endpoint al que desea conectar el dispositivo.
Para obtener más información sobre las instancias y los endpoints, consulte View instance endpoints. |
Desinicialice el SDK
Antes de desinicializar el SDK, cierre la conexión MQTT persistente entre el dispositivo e IoT Platform. Para desinicializar el SDK, llame a la siguiente operación de API.
[[LinkKitEntry sharedKit] destroy:^(BOOL succeeded, NSError * _Nullable error) {
LinkkitLogDebug(@"kit destroy error : %@", error);
dispatch_async(dispatch_get_main_queue(), ^{
[self ims_showHUDWithMessage:[NSString stringWithFormat:@ "Deinitialization: %@",
succeeded ? @ "Success" : @ "Failure"]];
});
}];
Interruptor de registros
Active el interruptor interno de salida de registros del SDK:
#import <IMSLog/IMSLog.h>
NSString * const IMS_DEMO_TAG = @"LinkkitDemo";
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Add the following code to enable the logging feature.
[IMSLog setAllTagsLevel:IMSLogLevelAll];
// Create a log panel and add it to the log framework.
//[IMSLog addAssistant:[[IMSDashboardLogAssistant alloc] init]];
// Enable logs to be displayed in the console.
[IMSLog showInConsole:YES];
// Specify a log tag.
[IMSLog registerTag:IMS_DEMO_TAG];
return YES;
}
Cree un listener para supervisar los cambios de estado de la conexión MQTT persistente
Código de ejemplo:
- (void)onConnectStateChange:(nonnull NSString *)connectId state:(LinkkitChannelConnectState)state {
NSString * connectTip = nil;
if (state == LinkkitChannelStateConnected) {
connectTip = @ "Connected";
} else if (state == LinkkitChannelStateDisconnected) {
connectTip = @ "Not connected";
} else {
connectTip = @ "Connecting";
}
dispatch_async(dispatch_get_main_queue(), ^{
self.labelConnectState.text = connectTip;
});
}
- (void)onNotify:(nonnull NSString *)connectId topic:(nonnull NSString *)topic data:(id _Nullable)data {
NSString * downData = [NSString stringWithFormat:@ "The pushed data is received, topic :%@ \r\n", topic];
downData = [downData stringByAppendingString:[NSString stringWithFormat:@ "\r \ndata :%@", data]];
LinkkitLogDebug(@"kit recv topic : %@", topic);
dispatch_async(dispatch_get_main_queue(), ^{
self.textViewDownData.text = downData;
});
}
- (BOOL)shouldHandle:(nonnull NSString *)connectId
topic:(nonnull NSString *)topic {
return YES;
}