Skip to content

Commit

Permalink
Merge branch 'release/1.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
BytesZero committed Oct 7, 2022
2 parents 1d2762f + ffba3c0 commit 230eb57
Show file tree
Hide file tree
Showing 154 changed files with 959 additions and 494 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 1.3.0
* 开屏支持配置文件,优化配置获取率
* SDK 版本升级到 `3.7.0.0`
* 优化 Android 全面屏适配
* 开屏去掉 `ButtonType` 支持


## 1.2.0
* 优化 iOS 静态库编译问题
* 升级 Android `pangle-adapter`
Expand Down
14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<h3 align="center">一款优质的 Flutter 广告插件(GroMore、穿山甲)</h3>

<p align="center">
<a href="https://pub.dev/packages/flutter_gromore_ads"><img src=https://img.shields.io/badge/version-v1.2.0-success></a>
<a href="https://pub.dev/packages/flutter_gromore_ads"><img src=https://img.shields.io/badge/version-v1.3.0-success></a>
<a href="https://github.com/FlutterAds/flutter_gromore_ads"><img src=https://img.shields.io/badge/platform-iOS%20%7C%20Android-brightgreen></a>
<a href="https://github.com/FlutterAds/flutter_gromore_ads/actions/workflows/flutter.yml"><img src="https://github.com/FlutterAds/flutter_gromore_ads/actions/workflows/flutter.yml/badge.svg?branch=develop"></a>
<a href="https://github.com/FlutterAds/flutter_gromore_ads"><img src=https://img.shields.io/github/stars/FlutterAds/flutter_gromore_ads?color=brightgreen></a>
Expand Down Expand Up @@ -35,7 +35,7 @@

``` Dart
dependencies:
flutter_gromore_ads: ^1.2.0
flutter_gromore_ads: ^1.3.0
```

> 下面 `导入 SDK` 是必须的配置,千万别省略了,仔细看文档来配置。
Expand All @@ -57,11 +57,9 @@ FlutterGromoreAds.initAd(appId);
/// [posId] 广告位 id
/// [logo] 如果传值则展示底部logo,不传不展示,则全屏展示
/// [timeout] 加载超时时间
/// [buttonType] 开屏广告的点击区域,1:全都可以点击 2:仅有下载 Bar 区域可以点击
FlutterGromoreAds.showSplashAd(
posId,
timeout: 3.5,
buttonType: 2,
);
```

Expand Down Expand Up @@ -157,10 +155,10 @@ FlutterGromoreAds.onEventListener((event) {
``` gradle
dependencies {
//GroMore_sdk adapter
implementation "com.gromore.cn:gdt-adapter:4.464.1334.0" //gdt adapter
implementation 'com.qq.e.union:union:4.464.1334'// 广点通广告 SDK
implementation "com.gromore.cn:pangle-adapter:4.5.1.1.3" //穿山甲 adapter
implementation 'com.pangle.cn:ads-sdk-pro:4.5.1.1'//穿山甲广告 SDK
implementation "com.gromore.cn:gdt-adapter:4.482.1352.1" //gdt adapter
implementation 'com.qq.e.union:union:4.482.1352'// 广点通广告 SDK
implementation "com.gromore.cn:pangle-adapter:4.7.1.2.1" //穿山甲 adapter
implementation 'com.pangle.cn:ads-sdk-pro:4.7.1.2'//穿山甲广告 SDK
// 其他参考官方文档 引入即可
}
```
Expand Down
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,5 @@ dependencies {
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
//GroMore_sdk
implementation "com.gromore.cn:gromore-sdk:3.5.0.0" //groMore sdk
implementation "com.gromore.cn:gromore-sdk:3.7.0.0" //groMore sdk
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.NonNull;
Expand All @@ -12,9 +13,14 @@
import com.zero.flutter_gromore_ads.page.FullVideoPage;
import com.zero.flutter_gromore_ads.page.InterstitialFullPage;
import com.zero.flutter_gromore_ads.page.InterstitialPage;
import com.zero.flutter_gromore_ads.utils.FileUtils;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

import io.flutter.BuildConfig;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.EventChannel;
import io.flutter.plugin.common.MethodCall;
Expand Down Expand Up @@ -166,20 +172,26 @@ public void requestPermissionIfNecessary(MethodCall call, MethodChannel.Result r
*/
public void initAd(MethodCall call, final MethodChannel.Result result) {
String appId = call.argument("appId");
boolean useTextureView = call.argument("useTextureView");
boolean supportMultiProcess = call.argument("supportMultiProcess");
boolean allowShowNotify = call.argument("allowShowNotify");
ArrayList directDownloadNetworkType = call.argument("directDownloadNetworkType");
// int[] directDownloadNetworkTypeList = DataUtils.convertIntegers(directDownloadNetworkType);
String config = call.argument("config");
JSONObject localConfigJson= null;
if (!TextUtils.isEmpty(config)){
String localConfigStr= FileUtils.getJson(config,activity);
try {
localConfigJson=new JSONObject(localConfigStr);
} catch (JSONException e) {
e.printStackTrace();
}
}
// 构建配置
GMAdConfig config = new GMAdConfig.Builder()
GMAdConfig adConfig = new GMAdConfig.Builder()
.setAppId(appId)
.setAppName("测试App")
.setDebug(BuildConfig.DEBUG)
.setOpenAdnTest(BuildConfig.DEBUG)
.setCustomLocalConfig(localConfigJson)
.build();
// 初始化 SDK
GMMediationAdSdk.initialize(activity.getApplicationContext(), config);
GMMediationAdSdk.initialize(activity.getApplicationContext(), adConfig);
result.success(true);
}

Expand All @@ -193,12 +205,10 @@ public void showSplashAd(MethodCall call, MethodChannel.Result result) {
String posId = call.argument(KEY_POSID);
String logo = call.argument(KEY_LOGO);
double timeout = call.argument(KEY_TIMEOUT);
int buttonType = call.argument(KEY_SPLASH_BUTTON_TYPE);
Intent intent = new Intent(activity, AdSplashActivity.class);
intent.putExtra(KEY_POSID, posId);
intent.putExtra(KEY_LOGO, logo);
intent.putExtra(KEY_TIMEOUT, timeout);
intent.putExtra(KEY_SPLASH_BUTTON_TYPE, buttonType);
activity.startActivity(intent);
// 设置进入动画
activity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ private void initData() {
// 获取参数
posId = getIntent().getStringExtra(PluginDelegate.KEY_POSID);
String logo = getIntent().getStringExtra(PluginDelegate.KEY_LOGO);
int buttonType = getIntent().getIntExtra(PluginDelegate.KEY_SPLASH_BUTTON_TYPE, GMAdConstant.SPLASH_BUTTON_TYPE_FULL_SCREEN);
double timeout = getIntent().getDoubleExtra(PluginDelegate.KEY_TIMEOUT, 3.5);
int absTimeout = (int) (timeout * 1000);
// 判断是否有 Logo
Expand All @@ -82,7 +81,7 @@ private void initData() {
}
}
int width = (int) UIUtils.getScreenWidthInPx(this);
int height = (int) UIUtils.getScreenHeightInPx(this);
int height = UIUtils.getRealHeight(this);
// 判断最终的 Logo 是否显示
if (!hasLogo) {
ad_logo.setVisibility(View.GONE);
Expand All @@ -96,8 +95,6 @@ private void initData() {
GMAdSlotSplash adSlot = new GMAdSlotSplash.Builder()
.setImageAdSize(width, height) // 既适用于原生类型,也适用于模版类型。
.setTimeOut(absTimeout)//设置超时
.setSplashButtonType(buttonType)
.setDownloadType(GMAdConstant.DOWNLOAD_TYPE_POPUP)
.build();
// 加载广告
gmSplashAd.loadAd(adSlot,this);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.zero.flutter_gromore_ads.utils;

import android.content.Context;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
* 文件工具类
*/
public class FileUtils {
/**
* 获取 Json
* @param fileName 文件名称
* @param context 上下文
* @return json 内容
*/
public static String getJson(String fileName, Context context) {
StringBuilder stringBuilder = new StringBuilder();
try {
InputStream is = context.getAssets().open(fileName);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
}
12 changes: 7 additions & 5 deletions example/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 30
compileSdkVersion 31
ndkVersion "21.4.7075529"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
Expand All @@ -39,6 +39,7 @@ android {
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}

buildTypes {
Expand All @@ -55,10 +56,11 @@ flutter {
}

dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
//GroMore_sdk adapter
implementation "com.gromore.cn:gdt-adapter:4.464.1334.0" //gdt adapter
implementation 'com.qq.e.union:union:4.464.1334'// 广点通广告 SDK
implementation "com.gromore.cn:pangle-adapter:4.5.1.1.3" //穿山甲 adapter
implementation 'com.pangle.cn:ads-sdk-pro:4.5.1.1'//穿山甲广告 SDK
implementation "com.gromore.cn:gdt-adapter:4.482.1352.1" //gdt adapter
implementation 'com.qq.e.union:union:4.482.1352'// 广点通广告 SDK
implementation "com.gromore.cn:pangle-adapter:4.7.1.2.1" //穿山甲 adapter
implementation 'com.pangle.cn:ads-sdk-pro:4.7.1.2'//穿山甲广告 SDK

}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"cypher":2,"message":"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"}
Loading

0 comments on commit 230eb57

Please sign in to comment.