Руководство по интеграции AdWoW iOS SDK (Swift)

  • Данное руководство представляет собой пошаговую инструкцию добавления фреймворка AdWoW в ваше iOS приложение. После завершения интеграции рекомендуем ознакомиться с документом «Описание AdWoW iOS SDK» для получения дополнительной информации.

  • Прежде всего вам необходимо зарегистрироваться в Личном кабинете на портале AdWoW по адресуhttp://adwow.ru и получить секретный ключ и ключ приложения.

  • Актуальная версия AdWoW iOS SDK всегда доступна в разделе “Разработчикам -> Загрузить SDK” в Личном кабинете.

  • Добавьте в свой проект фреймворк AdWow.framework, а также еще ряд других необходимых фреймворков (смотри список ниже).Откройте раздел Build Phases и добавьте следующие фреймворки:

    • `SystemConfiguration.framework`;
    • `AdSupport.framework`;
    • `CoreTelephony.framework`.
  • Начиная с версии 9 в iOS внесены изменения, связанные с повышением уровня безопасности траспортного слоя (App Transport Security https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/ ). С этого момента все внешние соеденения по умолчанию недоступны, в связи с чем модуль AdWoW потеряет способность взаимодествовать со своим серверным API. Чтобы устранить эту проблему, необходимо внести изменения в Info.plist вашего проекта.

    • <key>NSAppTransportSecurity</key>
      <dict>
      <key>NSExceptionDomains</key>
      <dict>
      <key>adwow.ru</key>
      <dict>
      <key>
      NSIncludesSubdomains</key>
      <true/>
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
      <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
      <false/>
      </dict>
      </dict>
      </dict>

    Данный код дает разрешение приложению осуществлять сетевое взаимодействие с доменом adwow.ru и его субдоменами. Либо можно выдать разрешение на взаимодествие с любыми хостами, используя следующий код:

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>

    Однако, следует учесть, что данный способ менее безопасный.

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

  • Для интеграции Objective-C фреймворка в Swift-проект необходимо добавить бриджинг-заголовок. Детальную документацию можно найти на портале

    https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

    Упрощенный способ:

    • 1. Добавить в проект h-файл (New->File->iOS->Source->Header File). Предположим, он будет называться AdwowSwift_AdwowSwift_Bridging_Header_h. Выглядеть изнутри он будет так:
    • #ifndef AdwowSwift_AdwowSwift_Bridging_Header_h
      #define AdwowSwift_AdwowSwift_Bridging_Header_h
      #import 
      #endif
    • 2. Открыть настройки проекта -> Build Settings, найти опцию Objective-C Bridging Header и установить для нее в качестве значения путь к заголовочному файлу из первого пункта. Правильнее всего указывать пути с помощью переменных окружения, например $(SRCROOT)/AdwowSwift-Bridging-Header.h – в данном случае путь указывает на файл в корневой папке проекта.
    • 3. Если вы обнаружили, что бриджинг-заголовок уже добавлен в ваш проект, то просто откройте h-файл и добавьте директиву ипторта AdWowSDK:
    • #import 

    Далее следует объявить класс AppDelegate, реализующий протокол AdWowDelegate:

    class AppDelegate: UIResponder, UIApplicationDelegate, AdWowDelegate

    Теперь можно производить инициализацию AdWoW. Это целесообразно делать в методе делегата UIApplicationDelegate didFinishLaunchingWithOptions.Пример инициализации AdWoW:

    //Инициализируем главный объект AdWow SDK
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    var adwow: AdWow = AdWow(appKey:AW_APP_KEY, andSecret: AW_APP_SECRET);
    AdWow.setSharedInstance(adwow);
    //Объявляем AppDelegate делегатом AdWow объекта
    adwow.delegate = self;
    return true
    }

    Не забудьте подставить актуальные значения appKey и appSecret, полученные в Личном кабинете.

  • Решение о том, когда вызывать сохранение момента внутри вашего приложения, принимаете вы сами. В нужном месте кода нужно вызвать соответствующий метод фреймворка. Любому пользователю разрешается зарабатывать неограниченное количество наград за один и тот же момент. Если награда с указанным именем доступна, SDK отобразит форму награды.

    //Сохранение момента: показ полноэкранной формы награды
    AdWow.sharedInstance().saveMoment(momentName, value: momentValue.doubleValue) { (unit, error) -> Void in
    if ((error) != nil) {
    NSLog("something weird")
    //можно показать окно ошибки
    }
    if (unit != nil) {
    unit.show()
    }
    }

    Таким образом вы даете понять SDK, что хотите показать пользователю форму награды.

  • Следует учесть один нюанс, касающийся названий моментов. Когда вы передаете строку в метод сохранения saveMoment, например “уровень 1 пройден”, она будет отображена в форме получения награды пользователю. Форма награды будет отображать сообщение вида “Поздравляем! вы заслужили награду за [ваше название момента]”. Вы всегда можете поменять заголовок момента в административной панели портала AdWoW. При этом название “уровень 1 пройден” менять внутри приложения не следует.

  • Мы предоставляем несколько тестовых приложений с открытым исходным кодом. Вы можете скачать в Личном кабинете тестовое приложение для анализа и отладки интеграции AdWoW.