تغيير الخادم دون إعادة ترجمة تطبيق iPhone، كيف؟

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

  •  22-07-2019
  •  | 
  •  

سؤال

أقوم بتطوير تطبيق iPhone حيث أقوم بجلب البيانات من خدمة ويب موجودة حاليًا على خادم محلي في شبكة LAN.

أقوم الآن بإحضار بياناتي الموجودة على خادم محلي باستخدام عنوان url مثل هذا:

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

ولكن في المستقبل، إذا تغير عنوان url الخاص بي، أي الخادم، سيكون شيئًا مثل هذا:

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

<وأ href = "https://web.archive.org/web/20100304194228/http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationSettings/ApplicationSettings.html" يختلط = "نوفولو noreferrer"> اقرأ المزيد

نصائح أخرى

ويجب عليك أن تكتب فئة التي يقرأ الخصائص من ملف (مثل بليست).

وبهذه الطريقة كلما يتم تشغيل التطبيق، فإنه سوف قراءة التكوين الخاص بها من بليست، وإجراء مكالمات إلى 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 Files بحيث يكون الملف النصي متاحًا عبر عنوان URL على شبكة توصيل المحتوى الخاصة بهم.

أنا متأكد من أن هناك طرقًا أخرى لمعالجة هذا الأمر.وفي كلتا الحالتين ستحتاج إلى عنوان URL رئيسي لا يتغير أبدًا أو نادرًا.وإلا فسوف تواجه موقفًا يتعين عليك فيه إعادة ترجمة تطبيقك وإعادة إرساله.

أليس هذا بالضبط ما هو DNS عنه؟ تحديد اسم مجال واحد، أن إعادة توجيه حيث تريد ... انها لا تساعد كثيرا في تصحيح الأخطاء قبل لديك تعيين المجال، ولكن الحصول على شيء اقامة الآن وإعادة المباشر حيث تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top