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

Я полагаю, что этот вопрос носит языковой характер, и я прошу об этом в отношении создания 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 } 
  • Открытый игровой интерфейс с Cocos2d-x
  • Игровая группа iOS
  • GameCenter пошаговая свадьба
  • handleTurnEventForMatch: didBecomeActive: не называется
  • Игровой центр приветствует баннер, не скрывающий строку состояния
  • GKTurnBased Информация о пользователе
  • Игровой центр IOS GKLocalPlayerListener
  • Как использовать GameCenter внутри приложения React Native
  • «Службы учетной записи Game Center в настоящее время недоступны» на Simulator
  • Игровой центр ios отправляет время и показывает в таблице лидеров
  • Каков размер изображений достижения GameCenter?
  • Interesting Posts

    Округление двойного значения до x числа десятичных знаков в быстром

    UIImagePickerController: получение изображения с видео

    Можно ли принудить AVFoundation к воспроизведению локального файла .ts?

    Ссылка на приложение для управления подписками в магазине приложений

    Странная маржа в WKWebView

    Использование файлов XIB / NIB, содержащихся в загруженных пакетах на iOS

    Не удалось отправить приложение в iTunesConnect.

    Являются ли уведомления о подключении / отключении экрана к iOS 5?

    музыкальное приложение iOS, прекратите музыку при завершении приложения

    Где я могу получить токен устройства, который требуется для Urban Airship для регистрации iOS?

    Тестирование RACSignals с помощью XCTest

    iOS – получить указатель из NSString, содержащего адрес

    UIImageJPEGПрисутствие приняло предупреждение о памяти

    Текст UITextField не прокручивается с левой стороны

    Можно ли «повторно очистить» IOS Date Picker?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.