Pergunta

Estou desenvolvendo um aplicativo para iPhone em que estou busca de dados de um serviço web atualmente localizada em um servidor local na LAN.

Agora eu estou buscando meus dados localizados em um servidor local com url algo como isto:

http: \ 192.168.0.150 \ Service \ service.asmx \ dataFetchingMethod

Mas no futuro, se a minha url muda servidor algo isto é assim:

http: \ www.anotherDomain.com \ Service \ service.asmx \ dataFetchingMethod

e

http: \ www.anotherURL.com \ Service \ service.asmx \ dataFetchingMethod

então como eu posso mudá-lo dinamicamente?

Atualmente eu ter codificado a url na aplicação.

Foi útil?

Solução

Preferências do aplicativo são feitas para isso:

- (BOOL) getDataFromWebserver
{
    NSString *url = [[NSUserDefaults standardUserDefaults] stringForKey:@"dataUrl"];

    if(url == nil)
    {
        [self setDefaultPrefs];
        url = [[NSUserDefaults standardUserDefaults] stringForKey:@"dataUrl"];
    }
    [self fetchData:url];//to implement
}

- (void)setDefaultPrefs
{
    NSDictionary *appPrefs = [NSDictionary dictionaryWithObjectsAndKeys:
                                   @"hardCodedUrl", @"dataUrl", nil];

    [[NSUserDefaults standardUserDefaults] registerDefaults:appPrefs];
    [[NSUserDefaults standardUserDefaults] synchronize];        
}

Leia mais

Outras dicas

Você deve escrever uma classe que lê as propriedades de um arquivo (como um plist).

Dessa forma, sempre que o aplicativo é executado, ele vai ler sua configuração do plist, e fazer chamadas para a URL do serviço especificado. Isto pode ser alterado sem recompilar o aplicativo.

Você vai necessidade de se conectar a algum tipo de recurso que seja nunca muda ou muda muito raramente. Eu vejo um par de abordagens diferentes.


Abordagem Proxy

Você pode configurar um servidor mestre ( http://masterurl.com/ ) que proxies seu pedido para outro servidor. A idéia aqui é que o servidor mestre nunca muda, mas a máquina que proxies para poderia mudar a qualquer momento. Por exemplo:

Assumindo seus Ligações de aplicativos do iPhone para http://masterurl.com/ :

  1. Todas as solicitações para http://masterurl.com/ são intermediadas por proxy para http://someotherurl.com/ .

  2. Em algum momento no futuro, você necessário substituir http://someotherurl.com/ com http://snazzynewurl.com/

  3. .
  4. Agora você pode apenas mudança http://masterurl.com/ para proxy para http://snazzynewurl.com/ .

Para o seu aplicativo do usuário nada mudou e você não tem que atualizar seu aplicativo e re-enviá-lo para revisão.


Local Abordagem Arquivo

Você pode obter a localização de um arquivo, como um arquivo txt ou xml.

Assumindo que o seu arquivo vive em http://someurl.com/location.txt e os conteúdos são simples:

inside location.txt:

http://someotherbaseurl.com/

O aplicativo, então, ler neste arquivo de texto e usar http://someotherbaseurl.com/ como base url para o resto de sua aplicação. Agora, se você precisar fazer uma alteração no URL, você pode simplesmente atualizar o arquivo de texto.

Se você está tomando a abordagem de arquivo local, eu recomendo que hospeda o arquivo usando o Amazon S3 ou Rackspace Cloud File para que o arquivo de texto está disponível através de uma URL em sua rede de entrega de conteúdo.

Eu tenho certeza que existem outras maneiras de lidar com isso. De qualquer maneira você vai precisar de uma URL mestre que nunca ou raramente muda. Caso contrário, você vai correr em uma situação onde você vai ter que re-compilação e re-enviar o seu aplicativo.

Não é este exatamente o DNS é para? Você especificar um único nome de domínio, que re-dirige, onde você gosta ... não é de muita ajuda na depuração antes de você ter o domínio configurado, mas se algo configurar agora e re-direta, onde você gosta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top