iPhone 응용 프로그램을 다시 컴파일하지 않고 서버 변경 방법은?

StackOverflow https://stackoverflow.com/questions/1649945

  •  22-07-2019
  •  | 
  •  

문제

LAN의 로컬 서버에있는 웹 서비스에서 데이터를 가져 오는 iPhone 응용 프로그램을 개발 중입니다.

이제 URL이있는 로컬 서버에있는 내 데이터를 다음과 같은 내용을 가져오고 있습니다.

http : 192.168.0.150 service service.asmx datafetchingmethod

그러나 미래에 내 URL이 변경되면 IE 서버가 다음과 같은 내용을 변경하면 다음과 같습니다.

http : www.anotherdomain.com service service.asmx datafetchingmethod

그리고

http : www.anotherurl.com service service.asmx datafetchingmethod

그렇다면 어떻게 동적으로 변경할 수 있습니까?

현재 응용 프로그램에서 URL을 하드 코딩했습니다.

도움이 되었습니까?

해결책

이를 위해 응용 프로그램 환경 설정이 이루어집니다.

- (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];        
}

더 읽으십시오

다른 팁

파일에서 속성을 읽는 클래스 (예 : Plist)를 작성해야합니다.

이렇게하면 앱이 실행될 때마다 PLIST에서 구성을 읽고 지정된 서비스 URL을 호출합니다. 앱을 다시 컴파일하지 않고 변경할 수 있습니다.

당신은 매우 바뀌거나 바뀌지 않는 어떤 종류의 리소스에 연결해야합니다. 나는 몇 가지 다른 접근법을 본다.


프록시 접근

마스터 서버를 설정할 수 있습니다 (http://masterurl.com/) 요청을 다른 서버로 프록시합니다. 여기서 아이디어는 마스터 서버가 변경되지 않지만 언제든지 프록시가 변경 될 수 있다는 것입니다. 예를 들어:

iPhone 앱이 연결한다고 가정합니다 http://masterurl.com/:

  1. 모든 요청http://masterurl.com/ 프록스가 있습니다 http://someotherurl.com/.

  2. 앞으로 어느 시점에서, 당신은 교체해야합니다http://someotherurl.com/ ~와 함께 http://snazzynewurl.com/.

  3. 이제 당신은 그냥 바꿀 수 있습니다http://masterurl.com/ 프록시 http://snazzynewurl.com/.

응용 프로그램의 사용자에게 아무것도 변경되지 않았으며 앱을 업데이트하고 검토를 위해 다시 제출할 필요가 없습니다.


위치 파일 접근법

TXT 또는 XML 파일과 같은 파일에서 위치를 얻을 수 있습니다.

파일이 거주한다고 가정합니다 http://someurl.com/location.txt 그리고 내용은 간단합니다.

inside location.txt:

http://someotherbaseurl.com/

그런 다음 앱은이 텍스트 파일에서 읽고 사용합니다. http://someotherbaseurl.com/ 나머지 앱의 기본 URL로. 이제 URL을 변경 해야하는 경우 텍스트 파일 만 업데이트 할 수 있습니다.

위치 파일 접근 방식을 사용하는 경우 Amazon S3 또는 Rackspace Cloud 파일을 사용하여 파일을 호스팅하여 컨텐츠 전달 네트워크의 URL에서 텍스트 파일을 사용할 수 있도록하는 것이 좋습니다.

나는 이것을 다루는 다른 방법이 있다고 확신합니다. 어느 쪽이든, 결코 변경하지 않거나 거의 변경되는 마스터 URL이 필요합니다. 그렇지 않으면 앱을 다시 컴파일하고 다시 제출 해야하는 상황이 발생합니다.

이것이 바로 DNS의 것이 아닌가? 당신은 당신이 좋아하는 곳에 다시 지시하는 단일 도메인 이름을 지정합니다 ... 도메인을 설정하기 전에 디버깅에 큰 도움이되지는 않지만 지금 무언가를 설정하고 원하는 곳에 다시 디렉션하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top