Scrivere applicazioni Swift mediante il kit SDK client iOS

È possibile sviluppare applicazioni Mobile iOS utilizzando il kit SDK client iOS e i linguaggi di programmazione Swift e Objective-C.

Utilizzo dell'IDE Xcode:

  1. Aggiungere i file di intestazione di creazione.
  2. Aggiungere i file di intestazione e le librerie SDK.
  3. Aggiungere il flag del linker Objective-C.
  4. Compila e collega l'applicazione utilizzando il kit SDK client iOS come qualsiasi altro progetto iOS in Xcode. L'utilizzo di SDK con Swift ha tutte le stesse dipendenze dell'utilizzo di SDK con Objective-C.

Aggiungi file di intestazione Bridging

È necessario utilizzare un file di intestazione bridging per importare i file di intestazione delle classi pubbliche Objective-C chiamate dall'applicazione Swift. Tutte le classi pubbliche disponibili nel kit SDK client Oracle Mobile Hub sono disponibili nella cartella include del kit SDK.

Per creare un file di intestazione bridging in Xcode, effettuare le operazioni riportate di seguito.

  1. Selezionare File > Nuovo... > File..., quindi nel file iOS/Origine scegliere Intestazione utilizzando l'icona .h. È possibile assegnare un nome al file di intestazione per la creazione.
    A seconda delle classi SDK utilizzate dall'applicazione, il contenuto deve essere simile al seguente:
    #ifndef GettingStartedSwift_Bridging_Header_h
    #define GettingStartedSwift_Bridging_Header_h
    
    #import "OMCCore.h"
    #import "OMCAuthorization.h"
    #import "OMCMobileBackend.h"
    #import "OMCMobileManager.h"
    #import "OMCServiceProxy.h"
    #import "OMCUser.h"
    
    #import "OMCStorage.h"
    #import "OMCMobileBackend+OMC_Storage.h"
    #import "OMCStorageCollection.h"
    #import "OMCStorageObject.h"
    
    #import "OMCSynchronization.h"
    #import "OMCMobileBackend+OMC_Synchronization.h"
    #import "OMCFetchObjectCollectionBuilder.h"
    #import "OMCMobileResource.h"
    #import "OMCSyncGlobals.h"
    
    #import "OMCAnalytics.h"
    #import "OMCMobileBackend+OMC_Analytics.h"
    
    #import "OMCNotifications.h"
    #import "OMCMobileBackend+OMC_Notifications.h"
    
    #import "OMCLocation.h"
    #import "OMCMobileBackend+OMC_Location.h"
    
    
    #endif /* GettingStartedSwift_Bridging_Header_h */
  2. Dopo aver creato il file di intestazione, annotare la posizione del file in Impostazioni di generazione per l'impostazione Objective-C Bridging Header.
    È consigliabile mantenere la posizione dell'intestazione specificata in relazione al progetto, anziché come percorso assoluto, qualora il progetto sia condiviso.

Aggiungere le intestazioni e le librerie SDK a un'applicazione Swift

Il set di intestazioni e librerie aggiunte dipende dalle librerie statiche del kit SDK client incluse nell'applicazione. È necessario disporre almeno delle librerie libOMCCore.a e libIDMMobileSDK.a.

Per aggiungere le intestazioni e le librerie SDK, effettuare le operazioni riportate di seguito.
  1. Scaricare e decomprimere il kit SDK di Oracle Mobile Hub.
  2. Nella posizione in cui sono stati estratti i file SDK, trascinare le librerie e i file di intestazione desiderati nel progetto Swift in Xcode.
    I contenuti delle librerie SDK vengono disposti in modo gerarchico per categoria, pertanto sarà necessario trascinare le altre cartelle per conservare le inclusioni di altre intestazioni.
  3. Nelle impostazioni Fasi di creazione, aggiungere le librerie statiche più le strutture iOS richieste dalla libreria IDM alla fase Collegamento con librerie binarie.
  4. Aggiungere i file di intestazione al percorso di ricerca. Nelle impostazioni del progetto, configurare Header Search Paths per includere la posizione della directory padre delle cartelle SDK, ovvero la directory padre di libOMCCore.a, libIDMMobileSDK.a e così via. Assicurarsi di utilizzare un percorso relativo per il progetto.
  5. Modificare il file di intestazione del bridge per includere i file di intestazione necessari per il codice.
    Ciò significa che sarà necessario aggiungere anche le intestazioni utilizzate dalla classe che si desidera utilizzare.
    Ad esempio, per assicurarsi che tutti i metodi di OMCAuthorization.h siano accessibili, è necessario aggiungere anche OMAuthView.h, OMCUser.hOMDefinitions.h. Senza questi file, alcuni metodi e proprietà di OMCAuthorization non saranno visibili e il compilatore non invierà avvisi con errori.

Usa oggetti SDK nelle applicazioni Swift

Le regole per la conversione da Objective-C a Swift sono descritte in modo corretto nella documentazione Apple. Per informazioni generali sulla relazione e l'uso di queste due lingue, assicurarsi che ci si stia visualizzando.

Per quanto segue, verificare quanto riportato di seguito.

  • La funzione Completamento automatico dell'Editor di codice in Xcode funziona in genere con una funzionalità sufficiente per ottenere i mapping. A volte tuttavia inserisce un'etichetta nel primo parametro che non dovrebbe trovarsi in quella posizione. Eseguire questa operazione se si utilizza la funzionalità Completamento automatico.

  • Quando i metodi init Objective-C passano a Swift, utilizzano la sintassi dell'inizializzatore Swift nativo. Ciò significa che il prefisso init viene suddiviso e diventa una parola chiave per indicare che il metodo è un inizializzatore. Per informazioni complete, consultare la documentazione Apple.

  • Prestare particolare attenzione alle specifiche dei parametri ! e ? facoltativi, nonché agli eventuali tipi parametrizzati nelle dichiarazioni. I tipi facoltativi sono determinati automaticamente dal compilatore durante il mapping di Objective-C a Swift.

Dovrebbe essere possibile compilare ed eseguire l'applicazione Mobile utilizzando Swift e il kit SDK client Oracle Mobile Hub sia sul simulatore Xcode che su un dispositivo effettivo.

Di seguito è riportato un esempio di Objective-C e il codice Swift confrontabile che utilizza il kit SDK client Oracle Mobile Hub.

Il seguente codice Objective-C per registrare un token dispositivo per le notifiche push:

// Get notifications sdk object
OMCNotifications* notifications = [[appDelegate myMobileBackend] notifications];

// Register device token with MCS server using notifications sdk
[notifications registerForNotifications:[appDelegate getDeviceTokenData]
 
onSuccess:^(NSHTTPURLResponse *response) {						  
	NSLog(@"Device token registered successfully on MCS server");						  
	dispatch_async(dispatch_get_main_queue(), ^{
	// Update UI here
	}) ;
}
 
onError:^(NSError *error) {						
	NSLog(@"Error: %@", error.localizedDescription);							
	dispatch_async(dispatch_get_main_queue(), ^{
	// Update UI here
	}) ;
}];

potrebbe essere scritto nel modo seguente in Swift:

@IBAction func registerForPushNotifications() {
	
	// Get notifications sdk object
	let notifications = appDelegate.myMobileBackend().notifications();
	
	// Get device token first, and assign it here
	let deviceTokenData:NSData! = nil;
	
	// Register device token with MCS server using notifications sdk
	notifications.registerForNotifications(deviceTokenData, onSuccess: { (response:NSHTTPURLResponse!) in
		
		NSLog("Device token registered successfully on MCS server");
		
		dispatch_async(dispatch_get_main_queue()) {
			// Update UI here
		}
		
	}) { (error) in
		
		print("Error: %@", error.localizedDescription);
	};
}