2014-10-12 58 views
2

我正在尝试将Swift与Chartboost IOS SDK集成。我遵循了Chartboost IOS集成页面https://answers.chartboost.com/hc/en-us/articles/201220095-iOS-Integration上的所有说明,并创建了一个桥接头以在我的swift项目中使用该框架。如何将Swift与Chartboost IOS SDK集成

BridgingHeader.h

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

我BridgingHeader.h文件loacated在我的项目的根目录http://i.imgur.com/DcTcixo.png,我都遵循必要的步骤,将BridgingHeader.h添加到我的构建设置http://i.imgur.com/jvtzs7a.png但是当我运行该项目我得到52错误 - >http://i.imgur.com/WCvyooz.png。为什么我会收到这些错误,我该如何摆脱它们?

回答

4

看起来头像需要UIKit和Foundation。将此行添加到桥接头的顶部。

#import <UIKit/UIKit.h> 

此外,你确定你的桥接头是在项目的文件系统的根? Xcode的Project Navigator的层次结构不一定与文件系统相同。

它正在寻找标题/Users/andrew/Documents/dev/ios/Protect Paigridge/打开查找器并确保该标题在该目录中。 Xcode可能已经在其他代码文件所在的位置创建了更深的级别。如果是这种情况,您可以编辑“生成设置”中的条目或移动文件。

+0

刚才检查,我的'BridgingHeader.h'文件肯定是'/Users/andrew/Documents/dev/ios/Protect Paigridge /' – theliberalsurfer 2014-10-16 03:08:16

+0

我已经更新了我的答案。 – connor 2014-10-16 10:04:32

+0

@AndrewM为你做了这项工作? – connor 2014-10-19 01:45:14

0

斯威夫特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() 
+1

你真的想在堆栈溢出时公开你的应用ID /签名吗? – 2015-09-07 07:19:29

+0

嘿 - 我在这里有一个奇怪的问题,你会看看http://stackoverflow.com/questions/38919940/chartboost-with-swift-interstitial-prefetch-if-not-complete-wait-but-no-a – skyguy 2016-08-12 15:56:53

0

这个问题是如何导入。

您可以objC代码和bridge.h,以显示在你的代码

[Chartboost showInterstitial:CBLocationHomeScreen];

为SWIFT

Chartboost.showInterstitial(CBLocationHomeScreen)

我希望能够帮助您

0

添加到上面回答的顶部答案尝试加入

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

您BridgingHeader.h文件

,并确保它们都在

#import <Chartboost/Chartboost.h> 

以上如上图所示