Как мне сохранить идентификатор сертификата в цепочке ключей для метода .connect в AWSIoTDataManager?

#ios #swift #amazon-web-services #aws-sdk #aws-iot

#iOS #swift #amazon-веб-сервисы #aws-sdk #aws-iot

Вопрос:

У меня возникли проблемы с использованием AWSIotDataManager класса для подключения к AWS MQTT broker, чтобы подписаться на события. Я передавал certificateID строку .connect методу, но затем понял, что над .connect определением метода упоминается, что: « certificateID должно быть сохранено в цепочке ключей».
Я наткнулся на AWSIoTKeychain класс, но я не уверен, как его использовать. Я также наткнулся на AWSIoTManager.createKeysAndCertificateFromCsr , но я также не могу понять, как его использовать, учитывая тот факт, что вместо этого я использую AWSIoTDataManager класс.
Как мне сохранить идентификатор сертификата в связке ключей? и затем, как мне использовать его для подключения к брокеру AWS MQTT? (У меня есть certID , pem и privateKey )

 let credentialsProvider:AWSCognitoCredentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.EUWest1, identityPoolId: consumerPoolId);

let iotEndPoint = AWSEndpoint(urlString: endPoint);

let iotDataConfiguration = AWSServiceConfiguration(
      region: AWSRegionType.EUWest1,
      endpoint: iotEndPoint,
      credentialsProvider: credentialsProvider
);
AWSServiceManager.default()?.defaultServiceConfiguration = iotDataConfiguration;
AWSIoTDataManager.register(with: iotDataConfiguration!, forKey: KEYSTORE_NAME);

iotDataManager = AWSIoTDataManager(forKey: KEYSTORE_NAME);

func mqttEventCallback(status: AWSIoTMQTTStatus) {
      if(status == AWSIoTMQTTStatus.connected) {
        iotDataManager.subscribe(
          toTopic: topic,
          qoS: .messageDeliveryAttemptedAtMostOnce,
          messageCallback: {
            (payload) ->Void in
            let stringValue = String(data: payload, encoding: String.Encoding.utf8)!;  
            // do stuff with the payload
            // ...
        } );

      }
}

let isConnected: Bool = iotDataManager.connect(withClientId: clientID,
                           cleanSession: true,
                           certificateId: certID,
                           statusCallback: mqttEventCallback);