Интеграция газетного киоска без нарушения обратной совместимости - PullRequest
6 голосов
/ 28 октября 2011

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

Кто-нибудь может дать мне какой-нибудь отзыв о том, как создать приложение, чтобы справиться с этим?

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

1 Ответ

5 голосов
/ 29 октября 2011

Что вам нужно в первую очередь, чтобы связать ваше приложение с платформой NewsstandKit.Это позволяет избежать сбоя устройства с версией iOS <5 из-за отсутствующих библиотек. </p>

Затем во время выполнения необходимо избегать вызова методов NK и обращения к классам NK, которые, очевидно, недоступны в iOS <5.В таком случае вы можете использовать такие методы, как NSClassFromString () или другие функции времени выполнения obj-c, которые позволяют динамически обнаруживать существование этих функций. </p>

Рекомендация, которую я могу сделать в этом случае, заключается в предоставлении предварительногодиректива -compiler, которая позволяет вам изолировать весь материал Newsstand на уровне компиляции.Таким образом, вы можете попытаться скомпилировать с использованием SDK 4 (если он у вас есть) и посмотреть ошибки или предупреждения компилятора.

Например, если вы добавите в свой файл Prefix.pch определение, подобное этому


#define WILL_USE_NK

тогда вы можете заключить в скобки все ссылки на NK следующим образом:


#ifdef WILL_USE_NK
... your NK statements go here ...
#endif

Позже, когда вы будете компилировать приложение с SDK4, вы сохраните это определение, чтобы у вас была реальная компиляция SDK4, действительная для устройств iOS4 (что вы можете проверить), и вы будете уверены, что все ваши ссылки NK не используются приложением iOS4.Затем вы должны #undef это определение и скомпилировать с SDK5 (конечно, сохраняя некоторые iOS 4.x в качестве минимальной цели) перед распространением приложения.

Конечно, таким образом вы не защищены от всех возможных ошибок, но, по крайней мере, вы изолировали ссылки на НК.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...