2016-04-12 10 views
1

Ich habe die AWS iOS SDK (v.2.3.6) in meine Anwendung integriert. Es funktioniert gut und gut, außer dass ich bemerkt habe, dass defaultServiceManager einen Vermerk enthält:AWS iOS SDK AWSServiceManager mehrere Service-Konfigurationen

„Sie sollten diese Singleton-Methode verwenden, anstatt eine Instanz der Service-Manager zu schaffen“.

Ich würde normalerweise nicht mit diesem ein Problem haben, außer es defaultServiceConfiguration ist unveränderlich ist: „Diese Eigenschaft kann nur einmal festgelegt werden, und alle nachfolgenden Setter ignoriert werden“

Ich habe eine Anforderung, die eine Dienstkonfiguration (dh identityPoolId + region) zur Laufzeit ändern kann.

Welche Möglichkeiten gibt es? Ich würde gerne die Service-Konfiguration jederzeit zurücksetzen können, aber das ist unwahrscheinlich, was die Dokumentation sagt.

Antwort

3

Sie sollten die Standard-Dienstkonfiguration nicht mutieren. Stattdessen stellt jeder Service-Client die folgenden Klassenmethoden:

+ register[ServiceClientName]WithConfiguration:forKey: 
+ [ServiceClientName]ForKey: 

Zum Beispiel für AWSS3TransferUtility, sie sind:

+ registerS3TransferUtilityWithConfiguration:forKey: 
+ S3TransferUtilityForKey: 

Auf diese Weise Sie eine andere Dienstkonfiguration für jeden Dienst-Client passieren kann in die Laufzeit. Indem Sie diesem Muster folgen, können Sie die unbeabsichtigt "verschmutzten" Standardkonfigurationsfehler vermeiden, die sehr schwer zu debuggen sind.

+0

Funktioniert wie ein Charme! –

+0

Ich habe Register hinzugefügt (mit: Konfiguration !, forKey: "KEY") Aber wenn ich mit dem Hochladen anfange, nimmt es die Standardkonfiguration an. Wie kann ich Upload-Übertragung mit meinem eigenen benutzerdefinierten Schlüssel aufrufen? –