Как интегрировать Chartboost IOS SDK со Swift

Я пытаюсь интегрировать Chartboost IOS SDK со Swift. Я выполнил все инструкции на странице интеграции Chartboost с IOS https://answers.chartboost.com/hc/en-us/articles/201220095-iOS-Integration и создал связующий заголовок для использования фреймворка в моем быстром проекте.

BridgeHeader.h

#import <Chartboost/Chartboost.h>
#import <Chartboost/CBNewsfeed.h>
#import <CommonCrypto/CommonDigest.h>
#import <AdSupport/AdSupport.h>

Мой файл BridgingHeader.h находится в корневом каталоге моего проекта http://i.imgur.com/DcTcixo.png и я выполнил необходимые шаги, чтобы добавить BridgingHeader.h в мои настройки сборки http://i.imgur.com/jvtzs7a.png, но когда я запускаю проект, я получаю 52 ошибки, например -> http://i.imgur.com/WCvyooz.png. Почему я получаю эти ошибки и как мне избавиться от них?


person theliberalsurfer    schedule 12.10.2014    source источник


Ответы (4)


Похоже, что заголовки требуют UIKit и Foundation. Добавьте эту строку вверху вашего связующего заголовка.

#import <UIKit/UIKit.h>

Кроме того, убедитесь, что ваш соединительный заголовок находится в корне проекта в файловой системе? Иерархия Project Navigator Xcode не обязательно совпадает с файловой системой.

Он ищет заголовок в /Users/andrew/Documents/dev/ios/Protect Paigridge/ Открыть искатель и убедиться, что заголовок находится в этом каталоге. Xcode, возможно, создал его на уровень глубже, где находятся остальные файлы вашего кода. В этом случае вы можете отредактировать запись в настройках сборки или переместить файл.

person Connor    schedule 16.10.2014
comment
Только что проверил, мой BridgingHeader.h файл точно находится в /Users/andrew/Documents/dev/ios/Protect Paigridge/ - person theliberalsurfer; 16.10.2014
comment
Извините, но я еще не пробовал. Причина в том, что я занимаюсь разработкой на семейном iPad, и мои родители уехали на пару вечеров и взяли его с собой. Я планировал попробовать, как только они вернутся, но просто воспользуюсь эмулятором. Извините, что заставил вас ждать! - person theliberalsurfer; 19.10.2014
comment
У нас есть прогресс! Я больше не получаю все ошибки, хотя в моем быстром коде появляется другая ошибка imgur.com/Zz4ryXl. Не могли бы вы помочь с этим? - person theliberalsurfer; 19.10.2014
comment
Вам нужна эта линия? Похоже, у меня есть доступ ко всем методам Chartboost без импорта. - person Connor; 19.10.2014
comment
Оказывается, я этого не сделал. Извините за это, я новичок в создании приложений для IOS. Я просто хочу сказать, вы волшебник! Ваше здоровье. - person theliberalsurfer; 19.10.2014
comment
Это отличный ответ. Если это решит большинство ваших проблем, за исключением нескольких, попробуйте также добавить #import ‹Foundation/Foundation.h› над импортом диаграммы. - person ; 13.02.2015
comment
Большое спасибо. Вам по-прежнему нужен #import ‹UIKit/UIKit.h› в классе моста, даже если вы уже импортируете UIKit в свой класс swift. Это работа для меня. - person Wei Lu; 24.07.2015

Добавляя к верхнему ответу, указанному выше, попробуйте добавить оба

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <Chartboost/Chartboost.h>

в ваш файл BridgingHeader.h

и убедитесь, что они оба выше

#import <Chartboost/Chartboost.h>

как показано выше

person Community    schedule 13.02.2015

Код Swift Chartboost, добавьте его в класс AppDelegate:

func applicationDidBecomeActive(application: UIApplication) 
{        
    let kChartboostAppID = "5472ef8f04b01601a1a5814c";
    let kChartboostAppSignature = "5b6222426e68cda48669a1d4d8246d4c3d20db9c";

    Chartboost.startWithAppId(kChartboostAppID, appSignature: kChartboostAppSignature, delegate: self);
    Chartboost.cacheMoreApps(CBLocationHomeScreen)
}

class func showChartboostAds()
{
     Chartboost.showInterstitial(CBLocationHomeScreen);
}

func didFailToLoadInterstitial(location :String!, withError error: CBLoadError)
{

}

func didDismissInterstitial(location :String! )
{
        if(location == CBLocationHomeScreen)
        {
            Chartboost.cacheInterstitial(CBLocationMainMenu)
        }
        else if(location == CBLocationMainMenu)
        {
            Chartboost.cacheInterstitial(CBLocationGameOver)
        }
        else if(location == CBLocationGameOver)
        {
            Chartboost.cacheInterstitial(CBLocationLevelComplete)
        }
        else if(location == CBLocationLevelComplete)
        {
            Chartboost.cacheInterstitial(CBLocationHomeScreen)
        }
 }

Синтаксис вызова:

   AppDelegate.showChartboostAds()
person Guru    schedule 24.11.2014
comment
Вы действительно хотите публично опубликовать свой идентификатор/подпись приложения при переполнении стека? - person Daniel Rinser; 07.09.2015
comment
Эй, у меня здесь странная проблема, не могли бы вы взглянуть на stackoverflow.com/questions/38919940/ - person skyguy; 12.08.2016

Эта проблема заключается в том, как импортировать.

Вы можете сделать код objC и bridge.h, чтобы показать в вашем коде

[Chartboost showInterstitial:CBLocationHomeScreen];

Для быстрого

Chartboost.showInterstitial(CBLocationHomeScreen)

я хочу, чтобы помочь вам

person NSDeveloper    schedule 08.12.2014