SwiftyAd 1.0.5

SwiftyAd 1.0.5

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2017 年 9 月
SwiftSwift 版本3.0
SPM支持 SPM

Satish Babariya 维护。



SwiftyAd 1.0.5

  • 作者:
  • Satish Babariya

SwiftyAd

示例

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install

要求

安装

SwiftyAd 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'SwiftyAd'
import SwiftyAd
  • 启动应用时立即设置辅助工具,例如在 AppDelegate 或第一个 ViewController 中使用您的 AdUnitIDs。
SwiftyAd.shared.setup(
      withBannerID:    "Enter your real id or leave empty if unused", 
      interstitialID:  "Enter your real id or leave empty if unused", 
      rewardedVideoID: "Enter your real id or leave empty if unused"
)
  • 要在项目中的任何位置显示广告,请调用这些方法

UIViewController

SwiftyAd.shared.showBanner(from: self) 
SwiftyAd.shared.showBanner(from: self, at: .top) // Shows banner at the top
SwiftyAd.shared.showInterstitial(from: self)
SwiftyAd.shared.showInterstitial(from: self, withInterval: 4) // Shows an ad every 4th time method is called
SwiftyAd.shared.showRewardedVideo(from: self) // Should be called when pressing dedicated button

SKScene(不要在 didMoveToView 中调用此方法,因为此时 .window 属性仍然是 nil。请使用延迟或稍后再调用。)

if let viewController = view?.window?.rootViewController {
     SwiftyAd.shared.showBanner(from: viewController) 
     SwiftyAd.shared.showBanner(from: viewController, at: .top) // Shows banner at the top
     SwiftyAd.shared.showInterstitial(from: viewController)
     SwiftyAd.shared.showInterstitial(from: viewController, withInterval: 4) // Shows an ad every 4th time method is called  
     SwiftyAd.shared.showRewardedVideo(from: viewController) // Should be called when pressing dedicated button
}

注意

您应仅通过专用按钮显示可 rewarding 视频,并且只有在视频加载时才显示该按钮(请参见下文)。如果用户按下奖励视频按钮并观看视频,重新加载下一个视频可能需要几秒钟。如果用户立即尝试观看另一段视频,此辅助工具将显示警报通知用户当前无可用的视频。

技巧

从我个人的经验和用户的角度来看,您不应不断推送全屏横幅广告。这将也会提高您的收入,因为用户保留率更高,因此您不应过分贪婪。因此您应该

  1. 不要每次按下按钮时都显示横幅广告
  2. 不要每次在游戏中死亡时都显示横幅广告
  3. 在显示方法中使用 “withInterval” 属性,并将其设置为至少 5/6,取决于该方法被调用的频率。在某些情况下,您可以将其设置为更低,例如在游戏死亡需要很长时间的地方。通常,5/6 的最小值是我认为最好的。您还可以随机化间隔,例如 5-8 之间的随机数。
  • 检查广告是否就绪
if SwiftyAd.shared.isRewardedVideoReady {
    // add/show reward video button
}

if SwiftyAd.shared.isInterstitialReady {
    // maybe show custom ad or something similar
}

// When these return false the helper will try to preload an ad again.
  • 移除横幅广告,例如在游戏过程中
SwiftyAd.shared.removeBanner() 
  • 要移除所有广告,主要是为了内购,只需简单调用
SwiftyAd.shared.isRemoved = true 

注意:移除广告布尔值

如果设置为true,则显示横幅和插页式广告的所有方法将不再触发,因此无需进一步编辑。

这不会阻止奖励视频显示,因为它们应该有一个专门的按钮。一些奖励视频不可跳过,因此不应自动显示。这样您可以移除横幅和插页式广告,但仍保留奖励视频按钮。

对于永久存储,您需要创建自己的“removedAdsProduct”属性并保存在UserDefaults或iOS Keychain等位置。然后在应用启动时检查保存的属性是否设置为true,并更新辅助属性。

  • 实现委托方法。

在相关SKScenes的DidMoveToView方法或您的ViewControllers的ViewDidLoad方法中设置委托,以接收委托回调。

SwiftyAd.shared.delegate = self 

然后创建一个遵循AdsDelegate协议的扩展。

extension GameScene: SwiftyAdDelegate {
    func swiftyAdDidOpen(_ swiftyAd: SwiftyAd) {
        // pause your game/app if needed
    }
    func swiftyAdDidClose(_ swiftyAd: SwiftyAd) { 
       // resume your game/app if needed
    }
    func swifyAd(_ swiftyAd: SwiftyAd, didRewardUserWithAmount rewardAmount: Int) {
        self.coins += rewardAmount
       // Reward amount is a DecimelNumber I converted to an Int for convenience. 
     
       // You can ignore this and hardcore the value if you would like but than you cannot change the value dynamically without having to update your app.
       
       // You can also ingore the rewardAmount and do something else, for example unlocking a level or bonus item.
       
       // leave empty if unused
    }
}

注意

此辅助程序将传递默认值到下面的方法

func swiftyAd(_ swiftyAd: SwiftyAd, didRewardUserWithAmount rewardAmount: Int) {

以防从广告网络获取值时出现问题或您意外将其设置为0或更低。默认值是1。如果您需要更改此值,例如更改为20,您可以在设置方法中更改它。

SwiftyAd.shared.setup(
      withBannerID:        ..., 
      interstitialID:  ..., 
      rewardedVideoID: ...,
      rewardAmountBackup: 20
)

支持横竖屏

  • 如果您的应用支持横竖屏,请在您的ViewControllers中添加以下方法。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: size, with: coordinator)
        
        coordinator.animate(alongsideTransition: { (UIViewControllerTransitionCoordinatorContext) in
          
            SwiftyAd.shared.updateOrientation()
            
            }, completion: { (UIViewControllerTransitionCoordinatorContext) -> Void in
                print("Device rotation completed")
        })
    }

提交应用至苹果

在iTunes Connect上提交您的应用至苹果时,不要忘记选择“您的应用是否使用广告标识符”为是,否则将遭到拒绝。如果您使用奖励视频,还应该选择第三点。

许可协议

SwiftyAd可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。