Gravar Aplicativos Swift Usando o SDK do Cliente iOS

Você desenvolve aplicativos móveis iOS usando o SDK do cliente iOS e as linguagens de programação Swift e Objective-C.

Usando o Xcode IDE:

  1. Adicione os arquivos de cabeçalho da ponte.
  2. Adicione os arquivos e as bibliotecas do cabeçalho SDK.
  3. Adicione o flag de vinculador Objective-C.
  4. Compile e vincule sua aplicação usando o SDK do cliente iOS como você faria com qualquer outro projeto iOS no Xcode. O uso do SDK com Swift tem todas as mesmas dependências que o uso do SDK com Objective-C.

Adicionar o Arquivo do Cabeçalho do Transição

Você precisa usar um arquivo de cabeçalho de ponte para importar os arquivos de cabeçalho das classes públicas Objective-C que sua aplicação Swift chama. Todas as classes públicas disponíveis no SDK do cliente Oracle Mobile Hub podem ser encontradas na pasta include do SDK.

Para criar um arquivo de cabeçalho de ponte no Xcode:

  1. Selecione Arquivo > Novo... > Arquivo... e, em seguida, em iOS/Código-fonte , escolha Arquivo de cabeçalho usando o ícone .h. Você pode fornecer o arquivo do cabeçalho de ponte a qualquer nome que escolher.
    Dependendo das classes SDK usadas pela aplicação, o conteúdo deverá ser semelhante ao seguinte:
    #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. Depois de criar o arquivo de cabeçalho, observe o local do arquivo nas Definições do Build para a configuração Objective-C Bridging Header.
    É melhor manter o local do cabeçalho especificado em relação ao projeto, em vez de como um caminho absoluto, caso o projeto seja compartilhado.

Adicionar Cabeçalhos e Bibliotecas SDK a um Aplicativo Swift

O conjunto de cabeçalhos e bibliotecas adicionadas depende do que as bibliotecas estáticas do SDK do cliente você inclui na aplicação. No mínimo, você precisa das bibliotecas libOMCCore.a e libIDMMobileSDK.a.

Para adicionar cabeçalhos e bibliotecas SDK:
  1. Faça download e descompacte o Oracle Mobile Hub SDK.
  2. No local onde você descompactou os arquivos SDK, arraste as bibliotecas e os arquivos de cabeçalho que deseja para seu projeto Swift em Xcode.
    O conteúdo das bibliotecas do SDK é organizado hierarquicamente por categoria, para que você precise arrastar todas as pastas para preservar as inclusões de outros cabeçalhos.
  3. Nas definições de Fases de Build , adicione as bibliotecas estáticas mais as estruturas iOS exigidas pela biblioteca IDM à fase Vincular a Bibliotecas Binárias .
  4. Adicione os arquivos de cabeçalho ao caminho da pesquisa. Nas definições do projeto, configure o Header Search Paths para incluir o local do diretório pai das pastas SDK, ou seja, o diretório pai de libOMCCore.a, libIDMMobileSDK.a etc. Certifique-se de usar um caminho relativo para o projeto.
  5. Edite o arquivo do cabeçalho da ponte para incluir os arquivos de cabeçalho que você realmente precisará para seu código.
    Isso significa que você também precisará adicionar cabeçalhos usados pela classe que deseja usar.
    Por exemplo, para garantir que todos os métodos de OMCAuthorization.h estejam acessíveis, você também precisará adicionar OMAuthView.h, OMCUser.hOMDefinitions.h. Sem esses arquivos no arquivo do cabeçalho de ponte, alguns métodos e propriedades de OMCAuthorization não ficarão visíveis e o compilador não o alertará com erros.

Usar Objetos SDK em Aplicativos Swift

As regras para conversão de Objective-C em Swift estão bem descritas na documentação da Apple. Para obter informações gerais sobre o relacionamento e o uso desses dois idiomas juntos, verifique se você observa lá.

Saiba o seguinte:

  • O recurso de preenchimento automático do Editor de Código no Xcode geralmente funciona bastante para você obter os mapeamentos. No entanto, às vezes, ele coloca um label no primeiro parâmetro que não deve estar lá. Assista a ele se estiver usando o preenchimento automático.

  • Quando os métodos init Objective-C vêm à Swift, eles obtêm na sintaxe do inicializador Swift nativo. Isso significa que o prefixo init é reduzido e torna-se uma palavra-chave para indicar que o método é um inicializador. Consulte a documentação da Apple para obter detalhes completos.

  • Preste atenção especial às especificações de parâmetros opcionais ! e ?, bem como a quaisquer tipos paramétricos nas declarações. Os tipos opcionais são determinados automaticamente pelo compilador ao mapear Objective-C para Swift.

Você deverá estar apto a compilar e executar seu aplicativo móvel usando o Swift e o SDK do cliente Oracle Mobile Hub tanto no Xcode Simulator quanto em um dispositivo real.

Aqui está um exemplo de Objective-C e o código Swift comparável que usa o SDK do cliente Oracle Mobile Hub.

O código Objective-C a seguir para registrar um token do dispositivo para notificações de 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
	}) ;
}];

pode ser escrito da seguinte maneira na 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);
	};
}