すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:デバイスの検証と接続

最終更新日:Mar 22, 2025

このトピックでは、iOS 用 Link SDK を初期化して、デバイスと IoT Platform 間の接続を確立する方法について説明します。

背景情報

iOS 用 Link SDK は、デバイスごとに一意の証明書検証方式のみをサポートしています。詳細については、「デバイスごとに一意の証明書検証」をご参照ください。

Java 用 IoT Platform SDK の初期化

サンプルコード:

#import <IotLinkKit/IotLinkKit.h>

    // SDK を初期化する前に、永続的な接続の状態変化を監視するリスナーを作成する必要があります。
    [[LinkKitEntry sharedKit] registerChannelListener:self];

    //// デバイス証明書情報を指定します。
    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"; //カスタムサーバーの 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:@ "初期化 :%@",
                                          succeeded ? @ "成功" : @ "失敗"]];
        });
    }];
            
重要
  • SDK を初期化すると、永続的な MQTT 接続が確立されているかどうかに関係なく、resultBlock が返されます。

  • [[LinkKitEntry sharedKit] registerChannelListener:self] 関数を呼び出すことで、[onConnectStateChange:state:] コールバック関数の戻り値に基づいて、永続的な接続が確立されているかどうかを確認できます。

パラメータ

パラメータ

説明

productKey

a18wP******

IoT Platform コンソールの [デバイスの詳細] ページでデバイス証明書を表示できます。詳細については、「デバイス検証情報の取得」をご参照ください。

deviceName

LightSwitch

deviceSecret

uwMTmVAMnGGHaAkqmeDY6cHxxB******

server

a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com

デバイスを接続するエンドポイント。

  • 以前のバージョンのパブリックインスタンスを使用する場合、パブリックインスタンスのエンドポイントは ${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com の形式です。

SDK の初期化解除

SDK を初期化解除する前に、デバイスと IoT Platform 間の永続的な MQTT 接続を閉じます。SDK を初期化解除するには、次の 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:@ "初期化解除: %@",
                                          succeeded ? @ "成功" : @ "失敗"]];
        });
    }];
            

ログスイッチ

SDK の内部ログ出力スイッチをオンにします。


#import <IMSLog/IMSLog.h>

NSString * const IMS_DEMO_TAG = @"LinkkitDemo";

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ログ機能を有効にするには、次のコードを追加します。
    [IMSLog setAllTagsLevel:IMSLogLevelAll];
    // ログパネルを作成し、ログフレームワークに追加します。
    //[IMSLog addAssistant:[[IMSDashboardLogAssistant alloc] init]];
    // コンソールにログを表示できるようにします。
    [IMSLog showInConsole:YES];
    // ログタグを指定します。
    [IMSLog registerTag:IMS_DEMO_TAG];

    return YES;
}
            

永続的な MQTT 接続の状態変化を監視するリスナーを作成する

サンプルコード:

- (void)onConnectStateChange:(nonnull NSString *)connectId state:(LinkkitChannelConnectState)state {
    NSString * connectTip = nil;
    if (state == LinkkitChannelStateConnected) {
        connectTip = @ "接続済み";
    } else if (state == LinkkitChannelStateDisconnected) {
        connectTip = @ "未接続";
    } else {
        connectTip = @ "接続中";
    }
    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:@ "プッシュされたデータを受信しました。 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;
}