SDK引入 - sunitsdk/SUnitUnityDemo GitHub Wiki
• minSdkVersion 16 or later
• compileSdkVersion 26 or later
-
添加SDK文件 将Assets/SHAREitSDK拷贝到目标工程中,该目录下demo文件是SDK的例子,可以参考
-
添加第三方依赖 将Assets/Plugins/Android/LitJson.dll拷贝到目标工程中,如果目标工程中此文件已存在,不用拷贝。
-
添加默认广告配置文件(有利于提高收入)
将接入准备中获取的default_layer文件拷贝到目标工程Assets/StreamingAssets目录下,路径如下图
-
Custom Gradle Template配置
打开Custom Gradle Template配置具体步骤如下1) File -> Build Settings ->切换Android 平台->Player Settings
2) Player Settings -> Player -> android Tab -> Publishing Settings -> Build下方 勾选“Custom Gradle Template”
-
mainTemplate.gradle文件配置
对Assets/Plugins/Android/mainTemplate.gradle文件进行配置,具体如下:
如果该文件不存在,直接拷贝到此目录下;
如果该文件已经存在,只要将mainTemplate文件中SHAREit start 和SHAREit end包裹的代码拷贝过去即可。
-
Custom Gradle Template配置
打开Custom Gradle Template配置具体步骤如下1) File -> Build Settings ->切换Android 平台->Player Settings
2) Player Settings -> Player -> android Tab -> Publishing Settings -> Build下方勾选“Custom Main Manifest,Custom Launcher Manifest, Custom Gradle Properties Template”三个选项。
-
launcherTemplate.gradle文件配置
对Assets/Plugins/Android/launcherTemplate.gradle文件进行配置,具体如下:
如果该文件不存在,直接拷贝到此目录下;
如果该文件已经存在,只要将launcherTemplate文件中SHAREit start 和SHAREit end包裹的代码拷贝到launcherTemplate.gradle文件里即可。 -
如果出现UnityAd 和 com.unity3d.ads:unity-ads 引用库冲突,请移除Unity里的广告组件,在 Window -> Package Manager里移除下图中相关的库即可
-
适配androidX 需要在 gradleTemplate.properties 里配置
android.useAndroidX=true android.enableJetifier=true
将接入准备中获取的“广告AppId”替换如下示例中 "YOUR_APP_ID"
<manifest>
<application>
<meta-data android:name="com.ushareit.ads.KEY_APP_ID"
android:value="YOUR_APP_ID"/>
</application>
</manifest>
YOUR_APP_ID 是必要参数,如未配置,测试模式下,将抛出 Crash 提示;非测试模式下,将初始化失败,无法获取广告。
以下为初始化配置
<!-- ⼴告渠道,默认SAHREit就可以 -->
<meta-data
android:name="com.sunit.channel"
android:value="SHAREit" />
<!-- 如果应用只有一个Activity无需声明此项,如果有多个activity,则value为游戏场景所在的主Activity路径 -->
<meta-data
android:name="com.sunit.mainActivity"
android:value="com.unityplayer.UnityActivity" />
<!-- 如果只有一个进程的应用无需声明此项, 默认包名进程. 如果多个进程的应用,需要声明支持广告的进程的名称-->
<meta-data
android:name="com.sunit.adProcess"
android:value="processName" />
<!-- 声明为 'debug' 则会使用测试模式,可以看到SDK内部调用Log,用于自测使用(正式包记得删除) -->
<meta-data
android:name="com.sunit.mode"
android:value="debug" />
广告Admob集成
在Manifest文件中配置如下内容:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ADMOB_APP_ID" />
ADMOBAPPID 由 SHAREit 服务对接人提供
Flurry数据上报集成
在Manifest文件中配置如下内容:
<meta-data
android:name="flurry.sdk.API_KEY"
android:value="FLURRY_API_KEY" />
- 我们强烈建议对接App需要WRITE_EXTERNAL_STORAGE权限,并且须按如下样例复写,此权限有利于提升广告收入
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:remove="android:maxSdkVersion" />
- 权限申请我们提供了如下方法,在应用开启后的第一个Awake中调用即可:(方法内含有Id初始化相关策略,即使接入方自己申请了权限也需要调用此方法)
SHAREitSDK.SHAREitSDK.requestStoragePermissions();
如果您的应用以 Android 10 或更高版本为目标平台,即 android:targetSdkVersion="29",请在应用的清单文件(AndroidManifest.xml)中将 requestLegacyExternalStorage 的值设为 true:
<manifest ... >
<!-- This attribute is "false" by default on apps targeting
Android 10 or higher. -->
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
</manifest>
需要如此配置以使 sdk 在用户授权读写存储权限后能正常访问手机上的文件,否则会导致接入升级 sdk 功能时不能正常下载升级安装包。
mainTemplate.gradle(Unity 2019.3版本开始是在launchTemplate.gradle里)中applicationId下方增加了account_type、content_authority
defaultConfig {
applicationId “com.xx.xx”
//SHAREit begin
multiDexEnabled true
resValue "string", "account_type", "${applicationId}.type"
resValue "string", "content_authority", "${applicationId}.provider"
//SHAREit end
}