Skip to content

如何接入

本章详细介绍 Android 和 iOS App 集成 EasyFly-Ads SDK 的完整步骤,帮助开发者快速完成接入。

Android 接入

环境要求

项目要求
最低 API Level21 (Android 5.0)
目标 API Level33+ (Android 13)
编译 SDK34+
Kotlin1.8+
Gradle7.0+

1. 添加依赖

在项目根目录 build.gradle 中:

groovy
allprojects {
    repositories {
        maven { url 'https://maven.easyfly.com/repository/maven-public/' }
        google()
        mavenCentral()
    }
}

在 App 模块 build.gradle 中:

groovy
dependencies {
    // 基础SDK(必须)
    implementation 'com.easyfly:core:1.0.0'
    
    // 广告模块
    implementation 'com.easyfly:ad:1.0.0'
    
    // 钱包模块(金币系统)
    implementation 'com.easyfly:wallet:1.0.0'
    
    // 或直接集成全部
    // implementation 'com.easyfly:all:1.0.0'
}

2. 配置 AndroidManifest.xml

xml
<manifest>
    <!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <!-- 获取设备信息(广告需要) -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    
    <!-- 访问网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application>
        <!-- 配置 AppKey -->
        <meta-data
            android:name="EASYFLY_APP_KEY"
            android:value="your_app_key" />
    </application>
</manifest>

3. SDK 初始化

Application 类中初始化:

kotlin
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        
        // 初始化 EasyFly-Ads SDK
        EasyFly.init(this, EasyFlyConfig.Builder()
            .setAppKey("your_app_key")        // 后台获取的 AppKey
            .setDebugMode(BuildConfig.DEBUG)  // Debug 模式开关
            .setUserId(currentUserId)         // 用户ID(登录后设置)
            .build()
        )
    }
}

4. 广告接入示例

kotlin
// 开屏广告
class SplashActivity : AppCompatActivity() {
    private lateinit var splashAd: SplashAd
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        splashAd = EasyFly.createSplashAd(this, "scene_splash_home")
        splashAd.setAdListener(object : SplashAdListener {
            override fun onAdLoaded() { splashAd.show() }
            override fun onAdDismissed() { navigateToMain() }
            override fun onAdFailed(code: Int, msg: String) { 
                navigateToMain() // 加载失败直接进入主页
            }
        })
        splashAd.load()
    }
}

// 激励视频广告
class GameActivity : AppCompatActivity() {
    private fun showRewardAd() {
        EasyFly.createRewardAd(this, "scene_reward_level")
            .setUserLevel(userId, "level_5")  // 可选:传入用户等级
            .setRewardName("金币 x100")
            .setRewardAmount(100)
            .setRewardCallback { reward ->
                // 发放奖励
                Wallet.addCoins(reward.amount)
                showToast("获得 ${reward.name}!")
            }
            .show()
    }
}

iOS 接入

环境要求

项目要求
最低版本iOS 12.0
Swift5.5+
Xcode14.0+
CocoaPods1.11+

1. 添加依赖 - CocoaPods

ruby
# Podfile
pod 'EasyFlyAds', '~> 1.0.0'

# 安装
pod install

2. 配置 Info.plist

xml
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
<key>EASYFLY_APP_KEY</key>
<string>your_app_key</string>

3. SDK 初始化

swift
import EasyFlyAds

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, 
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // 初始化
        let config = EasyFlyConfig.Builder()
            .appKey("your_app_key")
            .debugMode(false)
            .build()
        EasyFly.initialize(config)
        return true
    }
}

4. 广告接入示例

swift
// 开屏广告
class SplashViewController: UIViewController {
    func loadSplashAd() {
        EasyFly.createSplashAd(sceneId: "scene_splash_home", 
                               viewController: self)
            .setAdListener { result in
                switch result {
                case .loaded:
                    // 广告加载成功,自动展示
                    break
                case .dismissed:
                    self.navigateToMain()
                case .failed(let code, let message):
                    print("广告加载失败: \(code) - \(message)")
                    self.navigateToMain()
                }
            }
            .load()
    }
}

// 激励视频
func showRewardAd() {
    EasyFly.createRewardAd(sceneId: "scene_reward_level", 
                           viewController: self)
        .setRewardInfo(name: "金币 x100", amount: 100)
        .setRewardCallback { reward in
            Wallet.addCoins(reward.amount)
        }
        .show()
}

数据上报验证

接入完成后,在测试环境验证数据上报:

kotlin
// Android 开启调试日志
EasyFly.setLogLevel(LogLevel.DEBUG)

// 查看日志输出
// D/EasyFly: 初始化成功 appKey=xxx
// D/EasyFly: 广告请求 scene=splash_home
// D/EasyFly: 广告加载成功 adId=xxx
// D/EasyFly: 广告展示上报 adId=xxx
// D/EasyFly: 广告点击上报 adId=xxx

接入检查清单

  • [ ] SDK 依赖正确添加,编译通过
  • [ ] AppKey 配置正确
  • [ ] AndroidManifest / Info.plist 权限配置完整
  • [ ] SDK 初始化在 Application 中调用
  • [ ] 开屏广告加载和展示正常
  • [ ] 激励视频奖励回调触发正常
  • [ ] 数据上报日志有正常输出
  • [ ] 后台统计数据有更新
  • [ ] 混淆规则已配置(Android)

混淆配置(Android)

proguard-rules.pro

proguard
# EasyFly SDK
-keep class com.easyfly.** { *; }
-dontwarn com.easyfly.**

# 广告联盟(按需添加)
-keep class com.bytedance.sdk.** { *; }   # 穿山甲
-keep class com.qq.e.** { *; }            # 优量汇
-keep class com.kwad.** { *; }            # 快手
-keep class com.baidu.mobads.** { *; }    # 百度

下一步