1.0.7 • Published 6 months ago

com.harerush.sdk.all v1.0.7

Weekly downloads
-
License
-
Repository
github
Last release
6 months ago

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();
}

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
1.0.7

6 months ago

1.0.6-4-g985b30e

6 months ago

1.0.6-3-ge1527f0

6 months ago

1.0.6-2-g0d331b5

6 months ago

1.0.6-1-gfbdd009

6 months ago

1.0.6

6 months ago

1.0.6-rc4

6 months ago

1.0.6-rc3

6 months ago

1.0.6-rc2

6 months ago

1.0.6-rc1

6 months ago

1.0.5

6 months ago

1.0.5-rc3

6 months ago

1.0.5-rc2

6 months ago

1.0.5-rc1

6 months ago

1.0.4

6 months ago

1.0.4-rc1

7 months ago

1.0.3-4-gc5591e2

7 months ago

1.0.3-1-g552a2c3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago