com.harerush.sdk.all v1.0.7
HarerushSDK
介绍
野兔计划内部项目SDK集成工程。
软件架构
基于 NPM 强大的共享发布平台,将野兔内部SDK(包含第三方SDK)进行整合。利用 Unity Package Manager 可以快速便捷集成野兔SDK。
安装教程
1、添加NPM的registry
在Unity工程 Packages/manifest.json 文件中添加npm的registry,如下:
"scopedRegistries": [
{
"name": "Unity Package Registry by Harerush",
"url": "https://registry.npmjs.org",
"scopes": [
"com.harerush"
]
}
]
2、注入SDK的依赖
在上述的manifest.json文件dependencies节点里添加一行,如下:
"com.harerush.sdk.all": "xxx"
"xxx"表示当前SDK的版本号。比如要依赖1.0.5的rc版本,则可以写成
"com.harerush.sdk.all": "1.0.5-rc2"
3、配置工程
打开 Unity->File->Build Settings->Player Settings->Publishing Settings 勾选如下几个复选框(如果已勾选,则忽略):
Custom Main Manifest
勾选后会在 Assets/Plugins/Android 下生成 AndroidManifest.xml
Custom Main Gradle Template
勾选后会在 Assets/Plugins/Android 下生成 mainTemplate.gradle
Custom Launcher Gradle Template
勾选后会在 Assets/Plugins/Android 下生成 launcherTemplate.gradle
Custom Base Gradle Template
勾选后会在 Assets/Plugins/Android 下生成 baseProjectTemplate.gradle
Custom Gradle Properties Template
勾选后会在 Assets/Plugins/Android 下生成 gradleTemplate.properties
在 Assets/Plugins/Android/AndroidManifest.xml 里添加如下:
<!-- Facebook配置 -->
<activity
android:name = "com.facebook.FacebookActivity"
android:configChanges = "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label = "替换自己的app_name" />
<activity
android:name = "com.facebook.CustomTabActivity"
android:exported = "true">
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.DEFAULT" />
<category android:name = "android.intent.category.BROWSABLE" />
<data android:scheme = "替换自己的fb_login_protocol_scheme" />
</intent-filter>
</activity>
<meta-data
android:name = "com.facebook.sdk.ApplicationId"
android:value = "替换自己的facebook_app_id" />
<meta-data
android:name = "com.facebook.sdk.ClientToken"
android:value = "替换自己的facebook_client_token" />
<!-- 野兔的配置 -->
<meta-data
android:name = "com.harerush.sdk.MaxAdUnitId"
android:value = "替换自己的max_ad_unit_id" />
<meta-data
android:name = "com.harerush.sdk.AppsFlyerDevKey"
android:value = "替换自己的af_dev_key" />
<meta-data
android:name = "com.harerush.sdk.ShowMaxDebugView"
android:value = "是否显示max的debugView(0-不显示;1-显示)" />
<meta-data
android:name = "com.harerush.sdk.LeyoDebugMode"
android:value = "是否开启乐游SDK的debug开关(0-不开启;1-开启)" />
<meta-data
android:name = "com.harerush.sdk.TDAppId"
android:value = "替换自己的数数AppId" />
<meta-data
android:name = "com.harerush.sdk.TDServerUrl"
android:value = "替换自己的数数上报地址" />
<!-- ApplovinMax配置 -->
<meta-data android:name="applovin.sdk.key"
android:value="替换自己的SDK_KEY"/>
在 Assets/Plugins/Android/baseProjectTemplate.gradle 添加如下:
buildscript {
repositories {
...
google()
mavenCentral()
// applovinMax的maven仓库
maven { url 'https://artifacts.applovin.com/android' }
// 其他的广告渠道可能也会有自己的maven仓库,需要根据项目自行添加进来
}
dependencies {
...
// applovinMax的gradle插件
classpath "com.applovin.quality:AppLovinQualityServiceGradlePlugin:+"
// Firebase的gradle插件
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
}
}
allprojects {
repositories {
...
google()
mavenCentral()
// applovinMax的maven仓库
maven { url 'https://artifacts.applovin.com/android' }
// 其他的广告渠道可能也会有自己的maven仓库,需要根据项目自行添加进来
}
}
在 Assets/Plugins/Android/launcherTemplate.gradle 添加如下:
// applovinMax的服务
apply plugin: 'applovin-quality-service'
applovin {
apiKey "替换自己的AD_REVIEW_KEY"
}
// Firebase的服务
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
dependencies {
// 网络请求依赖
implementation "com.squareup.okhttp3:okhttp:4.9.2"
// Facebook登录依赖
implementation "com.facebook.android:facebook-login:latest.release"
// Google登录依赖
implementation 'com.google.android.gms:play-services-auth:20.5.0'
// ApplovinMax依赖
implementation 'com.applovin:applovin-sdk:11.4.3'
// 其他的子广告渠道商依赖,需要根据项目自行添加进来
// Google支付依赖
implementation "com.android.billingclient:billing:6.0.1"
// AppsFlyer依赖
implementation 'com.appsflyer:af-android-sdk:6.9.0'
implementation "com.android.installreferrer:installreferrer:2.2"
// Firebase依赖
implementation platform('com.google.firebase:firebase-bom:31.0.2')
implementation 'com.google.firebase:firebase-analytics'//事件分析
implementation 'com.google.firebase:firebase-crashlytics'//崩溃分析
// 谷歌商店评分依赖
implementation "com.google.android.play:core:1.10.3"
implementation 'androidx.appcompat:appcompat:1.1.0'//如果项目中没有引入androidx的依赖,则需要添这行
// 数数的依赖
implementation 'cn.thinkingdata.android:ThinkingAnalyticsSDK:2.8.3'
}
使用说明
1、SDK初始化
// LeyoSDK的初始化
PlatformManager.GetInstance().Init((success) => {
Debug.Log("乐游SDK初始化结果:" + success);
});
// 下面的模块根据项目的需要酌情去初始化
// 广告初始化
PlatformManager.GetInstance().InitMax();
// 支付初始化,必须要登录成功后才调用
PlatformManager.GetInstance().InitPurchase((purchaseInitResult) =>
{
Debug.Log("支付初始化结果: success = " + purchaseInitResult.IsSuccess);
});
// AppsFlyer初始化
PlatformManager.GetInstance().InitAppsFlyer((initResult) => {
Debug.Log("appsFlyer初始化结果:success = " + initResult.IsSuccess);
});
// Firebase初始化
PlatformManager.GetInstance().InitFirebase();
// 数数初始化
PlatformManager.GetInstance().InitTD();
2、登录
// LoginManager.LoginType.Tourist--游客
// LoginManager.LoginType.Facebook--Facebook
// LoginManager.LoginType.Google--Google
LoginManager.LoginType type = LoginManager.LoginType.Tourist;//登录类型
PlatformManager.GetInstance().Login(type, (result) => {
Debug.Log("登录结果:success = " + result.IsSuccess + " userId = " + result.UserId + " isBan = " + result.IsBan + " curTime = " + result.CurTime);
});
3、获取商品列表
// pruductLists 为 string[] 类型
PlatformManager.GetInstance().GetProductList(pruductLists, (result) => {
Debug.Log("获取商品列表结果:success = " + result.IsSuccess);
if (result.IsSuccess)
{
var data = result.Data;
foreach (var key in data.Keys)
{
var content = data[key];
Debug.Log("商品id: " + key + ", 价格:" + content.FormattedPrice + ", 货币符号:" + content.CurrencyCode + ", 商品名称:" + content.ProductName + ", 商品标题:" + content.ProductTitle);
}
}
});
4、支付
PlatformManager.GetInstance().Purchase(productId, price, (result) => {
Debug.Log("购买结果:success = " + result.IsSuccess + " productId = " + result.ProductId + " orderId = " + result.OrderId + " originJson = " + result.OriginJson);
});
5、查询补单
PlatformManager.GetInstance().QueryOrder((result) => {
Debug.Log("查询补单结果:success = " + result.IsSuccess);
});
// 查询接口如果有回调的话,则说明有需要补的单子,SDK内部会自定去消耗订单,有多个订单需要补的话,则会回调多次。
6、播放广告
PlatformManager.GetInstance().PlayRewardAds((result) => {
Debug.Log("广告播放结果:status = " + result.Status + " revenue = " + result.Revenue + " errCode = " + result.ErrCode + " errMsg = " + result.ErrMsg);
});
7、判断广告是否准备好
// 返回一个bool值
PlatformManager.GetInstance().IsRewardAdsReady();
8、加载广告
PlatformManager.GetInstance().LoadRewardAds();
// 这个方法一般是在调用 PlatformManager.GetInstance().IsRewardAdsReady() 时候返回false来手动再加载一次广告
9、商店评分
// title--假弹窗标题
// message--假弹窗内容
// color--假弹窗星星填充颜色,例如"#FFFFFF"
PlatformManager.GetInstance().ShowRatingView(title, message, color);
10、获取公共参数配置
// platform渠道号
PlatformManager.GetInstance().GetCommonConfigs(platform, (configsResult) => {
Debug.Log("获取公共参数配置:success = " + configsResult.IsSuccess + " param = " + configsResult.Param + " information = " + configsResult.Information + " email = " + configsResult.Email + " qq = " + configsResult.QQ);
});
PlatformManager.GetInstance().GetCommonConfigs(platform, userId, (configsResult) => {
Debug.Log("获取公共参数配置:success = " + configsResult.IsSuccess + " param = " + configsResult.Param + " information = " + configsResult.Information + " email = " + configsResult.Email + " qq = " + configsResult.QQ);
});
11、获取兑换码开关状态
PlatformManager.GetInstance().GetRedeemCodeSwitch((result) =>
{
Debug.Log("获取兑换码开关结果:success = " + result.IsSuccess + ", open = " + result.Open);
});
12、使用兑换码
PlatformManager.GetInstance().UseRedeemCode(code, (result) => {
Debug.Log("使用兑换码结果:success = " + result.IsSuccess);
foreach (var item in result.Data)
{
Debug.Log("兑换码道具详情=> 道具id:" + item.Id + ", 道具数量:" + item.Number);
}
});
13、数数开启自动采集
// app_install---应用安装事件
// app_start---应用启动事件
// app_end---应用关闭事件
string[] eventList = { "app_install", "app_start", "app_end" };
PlatformManager.GetInstance().TDEnableAutoTrack(eventList);
14、数数事件上报
var eventName = "purchase";
var eventParam = "{\"diamond\": \"xxxx\"}"//必须是JSON字符串
PlatformManager.GetInstance().TDLogEvent(eventName, eventParam);
15、生命周期函数
在构建出的安卓工程里主Activity生命周期函数里,需要添加如下代码:
// 先导入包名
import com.harerush.sdk.initial.InitialManager;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
InitialManager.getInstance().onActivityResult(requestCode, resultCode, data);
}
@Override protected void onDestroy ()
{
...
InitialManager.getInstance().onDestroy();
}
@Override protected void onPause()
{
...
InitialManager.getInstance().onPause();
}
@Override protected void onResume()
{
...
InitialManager.getInstance().onResume();
}
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago