Mobilidade Sem Limites III: Acessando APIs do iOS®

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

Mobilidade Sem Limites II: Acessando APIs do Android®

Mobilidade Sem Limites II: Acessando APIs do Android®

Imagem_001

Neste post anterior, mostramos a facilidade de se acessar diretamente a API dos sistemas operacionais móveis (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 combinar as duas coisas e mostrar mais um exemplo de como utilizar estes recursos para melhorar ainda mais nossas aplicações móveis.

Leia mais…

CRM: Morte por configuração?

ss-big-data-brain-300x218

Leitores frequentes do blog não se surpreenderão em ler que configurar corretamente seu CRM é crucial para uma implementação de sucesso. No entanto, você pode se surpreender em saber o quão diferente pode ser este processo em diferentes sistemas de CRM. Enquanto muitos acham que os sistemas são parecidos, estas diferenças fazem com que selecionar aquele que funciona melhor para você possa dar à sua empresa uma boa vantagem no projeto de implementação e integração.

Leia mais…