Mobilidade Sem Limites III: Acessando APIs do iOS®

Imagem_001

Neste post anterior, mostramos a facilidade de se acessar diretamente a API do sistema operacional móvel (Android ou iOS), para termos acesso a serviços que não estejam disponíveis na biblioteca padrão do Magic xpa.

neste vídeo, mostramos que a versão 2.5 do Magic xpa facilitou ainda mais este trabalho, com a nova função ClientNativeCodeExecute().

Agora, vamos repetir a dose focando a plataforma iOS apenas.

Em cima da mesma ideia do post anterior, vejamos uma rotina iOS que pode ser adicionada ao Magic xpa Client, para nos informar se existe conexão internet disponível, e qual o seu tipo.

Para recriar o client Magic xpa para iOS, precisaremos de um MacMini ou MacBook e também do XCode.

NOTA: esta é uma restrição da Apple, e não da Magic

Na pasta contendo o pacote de compilação do Magic xpa RIA Client para iOS, que é disponibilizado na instalação padrão do Magic, devemos adicionar as pastas “reachability” e “Network”:

Imagem_002

Estas pastas contém código personalizado Objective-C e podem ser baixadas deste endereço.

Com o projeto do Magic xpa aberto no XCode, devemos adicionar estas duas pastas à aplicação (projeto) MagicApp:

Imagem_003

 

reachability” contém o código que realiza o trabalho efetivamente, e “Network” é um wrapper para ser chamado pelo Magic xpa através da função ClientNativeCodeExecute().

Network.h

/***
 * Network.h -> Get internet connection availability/type
 * (C) 2014 - MSB
 */
#import "reachability.h"
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#define IOS7 floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1
@interface Network : NSObject
+(NSString *)GetType;
@end
// eof

Network.m

/***
 * Network.h -> Get internet connection availability/type
 * (C) 2014 - MSB
 */
#import "reachability.h"
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import "Network.h"
#define IOS7 floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1
@interface Network ()
@end
@implementation Network
+(NSString *)GetType
{
 Reachability * reachability = [Reachability reachabilityForInternetConnection];
 [reachability startNotifier];
 
 NetworkStatus status = [reachability currentReachabilityStatus];
 
 if(status == NotReachable)
 {
 // Nao faz nada. Cai la em baixo, e retorno "0"
 }
 else if (status == ReachableViaWiFi)
 {
 return @"5";
 }
 else if (status == ReachableViaWWAN)
 {
 if(IOS7)
 {
 CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
 NSString* radioTechnology = telephonyInfo.currentRadioAccessTechnology;
 
 if(!radioTechnology)
 return @"0";
 else if([radioTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [radioTechnology isEqualToString:CTRadioAccessTechnologyGPRS])
 return @"1";//2g
 else if([radioTechnology isEqualToString:CTRadioAccessTechnologyWCDMA] ||[radioTechnology isEqualToString:CTRadioAccessTechnologyHSDPA] || [radioTechnology isEqualToString:CTRadioAccessTechnologyHSUPA])
 return @"2";//3g
 else if([radioTechnology isEqualToString:CTRadioAccessTechnologyLTE])
 return @"3";//4g
 else if([radioTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x] || [radioTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0] || [radioTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA] || [radioTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB])
 return @"4";//CDMA
 }
 else
 {
 return @"1";
 }
 }
 // In any other case
 return @"0";
}
@end
// eof

Com dois cliques na aplicação MagicApp, acessamos o seu “target”, e na opção “Build Phases”, clicamos em “+” para acrescentar bibliotecas do sistema ao nosso projeto:

Imagem_004

 

Devemos selecionar e adicionar a biblioteca “CoreTelephony.framework”:

Imagem_005

Imagem_006

 

Por último, precisamos compilar a versão final (.IPA) do client Magic xpa. Para detalhes de todo o procedimento de compilação, reveja nosso Tutorial Mobile.

Após compilarmos o novo client, podemos então executar a função:

 

ClientNativeCodeExecute(‘Network.GetType’, ‘A’)

 

Para sabermos qual o tipo de conexão que está disponível. Os retornos possíveis são:

 

0’- Sem conexão

1’- 2G

2’- 3G

3’- 4G

4’- CDMA

5’- WIFI

 

Imagem_007

Créditos: contribuição com o código Objective-C: Nitin Bhosle.

Manoel Frederico Silva – Gerente de Produto e Evangelista de Tecnologia – Magic Brasil
Manoel Frederico Silva – Gerente de Produto e Evangelista de Tecnologia – Magic Brasil

2 comentários

  1. Bah, mas esse daqui tá igual aquele outro. Pq dois postagem da mesma coisa, e nao uma so?

    E porque que estas coisas nao vem de dentro do Magic, agente tem de ficar fazendo por fora com estas linguagem estranhas?

    Bah, assim nao da. Nao ta me agradando

    1. Olá,

      achei melhor dividir em dois posts, um de Android e outro de iOS.

      Você pode enviar sugestões do que gostaria de ter no produto (Magic).

      Isso se chama ‘WISH LIST’.

      Pode tentar reunir apoiadores às suas ideais, e quanto mais desenvolvedores solicitarem um mesmo recurso, mais força estes pedidos ganham lá na MSE.

      Abraços,

Deixe um comentário para BIG Mouse Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *