Каков хороший подход к отключению функциональных возможностей, которые не поддерживаются?

Я полагаю, что этот вопрос носит языковой характер, и я прошу об этом в отношении создания iPhone-приложения, которое использует новый API Game Center, но, пожалуйста, не стесняйтесь отвечать на общих условиях разработки программного обеспечения.

Я создаю игру для iPhone, которая использует преимущества новых возможностей Game Center (например, Auto-matching, leaderboards, достижения и т. Д.), Но я хочу написать игру, чтобы она работала на всех iPhone, включая те, которые не установлены Game Center и не могут использовать возможности Game Center. Для этого Apple рекомендует подход …

«Мы бы рекомендовали сделать одну версию приложения, которая динамически обнаруживает, доступен ли Game Center и использует его (или нет) на основе этого».

С моим текущим уровнем программирования простой подход, который я бы предпринял для реализации этого, состоял бы в том, чтобы проверить, доступен ли Game Center или нет, и соответственно установить простой логический флаг. Затем используйте этот флаг для управления потоком выполнения программного обеспечения. Я уверен, что смогу сделать эту работу, но поскольку мне нравится учиться и наслаждаться программированием, мне было интересно, есть ли более эффективный подход или шаблон проектирования для отключения блоков функциональности, которые не поддерживаются, а также контроля потока выполнения.

Заранее благодарим за вашу мудрость!

3 Solutions collect form web for “Каков хороший подход к отключению функциональных возможностей, которые не поддерживаются?”

Ознакомьтесь с примерами кода Game Kit на веб-сайте разработчика Apple. Они реализуют класс GameCenterManager, который будет хорошо работать для того, что вы пытаетесь выполнить.

То, что вы обычно используете в этих случаях, называется шаблоном фасада . В вашем случае вы создадите оболочку для функций игрового центра, который вы используете в своем приложении, а затем две реализации: одна, которая, вероятно, делает немного больше, чем прокси-вызовы в игровой центр, а другая, которая возвращает законченные ответы по мере необходимости ,

Я отмечу, что я никогда не выполнял никаких программ iOS / Object C, поэтому я понятия не имею, как можно было бы правильно реализовать это в этой среде.

Обычно я тестирую поддержку Game Center с помощью простой функции C-стиля, которая расширяет рекомендованный Apple метод. Это добавляет тест устройства для моделей iPod Touch 1st Gen и 3G, поскольку код Apple не учитывает эти устройства.

#import <sys/utsname.h> BOOL isGameCenterAvailable() { // Check for presence of GKLocalPlayer API. Class gcClass = (NSClassFromString(@"GKLocalPlayer")); // The device must be running running iOS 4.1 or later. NSString *reqSysVer = @"4.1"; NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending); // 1st Gen iPod and 3G don't support Game Center struct utsname systemInfo; uname(&systemInfo); NSString *theModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; if ([theModel isEqualToString:@"iPhone1,2"] || [theModel isEqualToString:@"iPod1,1"]) { return FALSE; } return (gcClass && osVersionSupported); } 

Использование так же просто, как и

 if (isGameCenterAvailable()) { // display game center UI } 
  • GKLocalPlayer loadRecentPlayersWithCompletionHandler возвращает пустой массив последних игроков в iOS 10 GM
  • Game Center "указанный участник не имеет требуемого состояния поворота"
  • обработка нескольких пользователей игрового центра iOS в постоянной игре
  • Отправить NSString через Game Center
  • «Службы учетной записи Game Center в настоящее время недоступны» на Simulator
  • Тестирование многопользовательского игрового центра
  • Можно ли удалить очки или очки из Game Center?
  • Как получить 10 лучших баллов из определенной таблицы лидеров gamecenter с быстрым (iOS)
  • iOS Development: Почему загрузка loadScoresWithCompletionHandler не возвращается?
  • Ошибка в этой игре не распознана Game Center
  • Разработка iOS: после обновления моего iPhone 4 до iOS 4.3 Beta 3 в моем приложении говорится: «Эта игра не распознается игровым центром»
  • Interesting Posts
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.