Cette rubrique explique comment initialiser le Link SDK pour iOS afin d'établir une connexion entre un appareil et IoT Platform.
Informations générales
Le Link SDK pour iOS prend uniquement en charge la méthode de vérification par certificat unique par appareil. Pour plus d'informations, consultez la section Vérification par certificat unique par appareil.
Initialiser le SDK IoT Platform pour iOS
Exemple de code :
#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"]];
});
}];
Après l'initialisation du SDK, le bloc
resultBlockest renvoyé, que la connexion MQTT (Message Queuing Telemetry Transport) persistante soit établie ou non.Appelez la fonction
[[LinkKitEntry sharedKit] registerChannelListener:self]pour vérifier si une connexion persistante est établie, en vous basant sur le résultat renvoyé par la fonction de rappel[onConnectStateChange:state:].
Paramètres
Paramètre | Exemple | Description |
productKey | a18wP | Vous pouvez consulter le certificat de l'appareil sur la page Device Details de la console IoT Platform. Pour plus d'informations, consultez la section Obtenir les informations de vérification de l'appareil. |
deviceName | LightSwitch | |
deviceSecret | uwMTmVAMnGGHaAkqmeDY6cHxxB | |
server | a18wP.iot-as-mqtt.cn-shanghai.aliyuncs.com | L'endpoint auquel vous souhaitez connecter l'appareil.
Pour plus d'informations sur les instances et les endpoints, consultez la section Afficher les endpoints des instances. |
Désinitialiser le SDK
Avant de désinitialiser le SDK, fermez la connexion MQTT persistante entre l'appareil et IoT Platform. Pour désinitialiser le SDK, appelez l'opération API suivante.
[[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"]];
});
}];
Activer la journalisation
Activez la sortie des journaux internes du 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;
}
Créer un écouteur pour surveiller les modifications d'état de la connexion MQTT persistante
Exemple de code :
- (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;
}