# fn-sdk-flutter-45 **Repository Path**: chenanshun/fn-sdk-flutter-45 ## Basic Information - **Project Name**: fn-sdk-flutter-45 - **Description**: 赋能广告,flutter 插件 - **Primary Language**: Dart - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-06-29 - **Last Updated**: 2023-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flutter_fn_sdk Flutter FN SDK 说明文档 ## 1、集成插件 ### 添加依赖 ``` dependencies: flutter_fn_sdk: # 这里是插件的相对位置或者绝对位置 如:Users/Zero/project/flutter_fn_sdk 或 ../flutter_fn_sdk path: Users/Zero/project/flutter_fn_sdk ``` ### Android 配置 #### 复制依赖SDK 拷贝 `flutter_fn_sdk/android/libs`目录下的所有依赖包到自己项目的 `android/app/libs`目录下,具体参考 `flutter_fn_sdk/example/android/app/libs` ![](example/images/01.png) #### 配置项目的依赖 ```shell // build.gradle dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) } ``` 可以参考 `flutter_fn_sdk/example/android/app/build.gradle` 的配置文件 #### 添加 `activity` 配置到 `AndroidManifest.xml` 中 ``` ``` #### 混淆配置 ``` -keep public class com.fn.sdk.api.**{ *; } -keep public class com.fn.sdk.Response.**{ *; } -keep public class com.fn.sdk.httpapi.databean.**{ *; } -keep public class com.fn.sdk.sdk.model.f2.F2{ public ; } -keep public class com.fn.sdk.sdk.model.f4.F4{ public ; } -keep public class com.fn.sdk.sdk.model.f5.F5{ public ; } -keep public class com.fn.sdk.sdk.model.f6.F6{ public ; } -keep public class com.fn.sdk.sdk.model.f7.F7{ public ; } -keep public class com.fn.sdk.sdk.model.f8.F8{ public ; } -keep public class com.fn.sdk.sdk.model.f10.F10{ public ; } -keep public class com.fn.sdk.sdk.model.f13.F13{ public ; } -keep public class com.fn.sdk.sdk.model.f15.F15{ public ; } -keep public class com.fn.sdk.sdk.model.f16.F16{ public ; } -keep public class com.fn.sdk.sdk.model.f17.F17{ public ; } -keep public class com.fn.sdk.config.FnConfig{ *; } -keep public class com.fn.sdk.config.FnConfig$Builder{ *; } -keep public class com.fn.sdk.FnAdSDK{ *; } -keep public class com.fnmobi.sdk.api.**{ public ; } -keep public class com.fnmobi.sdk.FnMobiSdk{ *; } -keep public class com.fnmobi.sdk.FnMobiConf{ *; } -keep public class com.fnmobi.sdk.FnMobiConf$Builder{ *; } -keep class com.wannuosili.sdk.** {*;} -dontwarn com.wannuosili.sdk.** -keepattributes *Annotation* -keepattributes *JavascriptInterface*​-keepclassmembers class * { @android.webkit.JavascriptInterface ;} -keep class com.yd.** {*;} ``` > Android 其他错误,可以参考下面的 `常见错误解决方法` ## 2、相关接口 ### 初始化 ``` Dart /// 初始化广告 /// [appId] 应用媒体ID /// [test] 是否开启测试 /// [debug] 是否开启调式 FlutterFnSdk.initAd(appId, test: true, debug: true); ``` ### 设置广告监听 ``` FlutterFnSdk.onEventListener((event) { _adEvent = 'adId:${event.adId} action:${event.action}'; if (event is AdErrorEvent) { // 错误事件 _adEvent += ' errCode:${event.errCode} errMsg:${event.errMsg}'; } else if (event is AdRewardEvent) { // 激励事件 _adEvent += ' transId:${event.transId} customData:${event.customData} userId:${event.userId}'; } print('onEventListener:$_adEvent'); }); ``` ### 开屏广告 ``` Dart /// 展示开屏广告 /// [posId] 广告位 id FlutterFnSdk.showSplashAd(posId); ``` ### 插屏广告 ``` Dart /// 展示插屏广告 /// [posId] 广告位 id FlutterFnSdk.showInterstitialAd(posId); ``` ### 激励视频广告 ``` Dart /// 展示激励视频广告 /// [posId] 广告位 id /// [userId] 用户id /// [customData] 附加信息 FlutterFnSdk.showRewardVideoAd( AdsConfig.rewardVideoId, userId: 'userId', customData: 'customData', ); ``` ### Banner 广告 > 这里 Banner 是一个 `Widget` ,你可以放到任何 Flutter 组件上,需要外部嵌套一个带有约束的`Widget`使用 `AspectRatio、SizedBox、Container` ``` Dart /// 初始化广告 /// [posId] 广告位 id /// [show] 是否开启显示 AdBannerWidget( posId: AdsConfig.bannerId, show: true, ) ``` - 如嵌套 `Container` ``` Dart Container( width: double.infinity, height: 80, child: AdBannerWidget( posId: AdsConfig.bannerId, show: true, ), ) ``` ## 常见错误解决方法 ``` AAPT: error: unexpected element found in ``` [参考这里解决,需要升级 gradle](https://stackoverflow.com/a/65857921/4501068),具体版本看 example 里的示例 ``` Cannot fit requested classes in a single dex file (# methods: 113215 > 65536 ; # fields: 93885 > 65536) ``` [方法数超过 64k,需要分包,参考这里配置](https://stackoverflow.com/a/51341735/4501068),具体版本看 example 里的示例 ``` Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 ``` > 更新 `minSdkVersion` 为 `21` ``` add 'tools:replace="android:label"' to element at AndroidManifest.xml ``` > 在 `AndroidManifest.xml`的 `application` 节点中添加 `tools:replace="android:label"`