应用墙接入指引

目录


1、应用墙接入准备

1.1步骤一 将sdk的jar包导入您的工程中

新建libs文件夹,将jar包添加入。

1.2步骤二 添加assets内容

将assets.zip解压,将里面全部文件导入apk工程的assets中,确保其中文件在apk打包后的assets根目录下存在。

1.3 步骤三 将so导入您的工程中。

•在步骤一建好的libs下面新建armeabi,将libsuperapp_base_armeabi*.so重命名为libsuperapp_base.so和libBeacon.so、libsuperapp_ex.so以及libBugly.so这3个so一起放到libs/armeabi目录下面。
•在assets/superapp目录下(工程默认有这个目录)新建lib目录,lib目录下面新建x86目录(兼容x86架构),libsuperapp_base_x86*.so重命名为libsuperapp_base.so放到assets/lib/x86目录下面,请仔细确认目录名称和位置,否则会无法正常使用并拉取到数据。

1.4 步骤四 在AndroidManifest.xml文件中配置用户权限

•请将下面权限配置代码复制到 AndroidManifest.xml 文件中,否则可能会无法正常使用。
以下列出的所有权限都是必要权限:

1.5 步骤五 在AndroidManifest.xml中声明Activity和service

•在AndroidManifest.xml 文件中,声明展示应用的Activity:

<activity
    android:name="com.tencent.assistant.oem.superapp.activity.HomeActivity"
    android:configChanges="keyboardHidden|orientation"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />
<activity
    android:name="com.tencent.assistant.oem.superapp.activity.ContentActivity"
    android:configChanges="keyboardHidden|orientation"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:screenOrientation="portrait"/>
	

1.6 步骤六 混淆注意事项

•在进行打包混淆的时候,在build文件中加入以下内容,否则SDK无法正常使用:

-dontwarn com.tencent.**
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class com.tencent.** {*;}
-keep class com.qq.** {*;}
-keepclasseswithmembernames class com.tencent.beaconyybwall.nativeimpl.a {native <methods>;}
	

2、应用墙SDK接口说明及使用说明

2.1、应用墙SDK接口说明

public static synchronized TADownloadSdkManager getInstance()
	

介绍:返回一个SDK接口类的单实例,接口对象必须通过该方法取得实例,获取到的实例应与主Activity生命周期相同。
返回值:返回一个接口对象的引用。

public boolean isInit()
	

介绍:判断是否已经初始化
返回值:SDKInitResult中有两个参数,resultCode表示返回码,resultMessage表示返回结果说明。当resultCode==0时,表示初始化成功

public synchronized void initSDK(Context context, String appKey, String appSecret, String userId, ArrayList<Integer> sceneList, SDKInitCallback callback)
	

介绍:初始化接口对象,显示任何Activity前必须初始化,否则会抛出异常。为了确保「监听积分墙任务完成情况」功能正常使用,初始化必须在Application中完成,如果在启动Activity前如果发现未初始化,也应做初始化。如果需要更新除context以外的参数信息,可以通过再次调用该方法更新信息。
参数说明:
Context:盛放SuperApp的容器Context,如果为null,则不进行初始化,只更新其他参数。
appKey:申请接入通过后发放的AppKey,如果为null,则不更新该参数。
appSecret:申请接入通过后发放的AppSecret1,如果为null,则不更新该参数。
userId:当前用户的唯一标识符,发放奖励时使用,如果为null,则不更新该参数。
sceneList:需要SDK支持的场景集合,如果为null,则不更新该参数。
0:应用墙
示例:

ArrayList<Integer>ids=newArrayList<Integer>();
ids.add(0);
	

callback:通知初始化结果的回调,如果为null,则不更新该参数。关于SDKInitCallback的定义参见下文

public void showSDKView(int type);
	

介绍:显示SDK的Activity场景
参数说明:
type:
0表示应用墙;
SDKInitCallback:

public interface SDKInitCallback {
	void onInitFinished(SDKInitResult result);
	void onUserTaskCompleted(PrizeInfo prize);
}
	
public void onInitFinished(SDKInitResult result)
	

介绍:初始化完成的回调函数 参数说明: SDKInitResult:定义一些常用的初始化返回码和返回内容,说明如下:
resultCode==0,初始化成功
resultCode==-1,网络不通
resultCode==-2,认证失败,请检查appKey和appSecret传入是否正确,请检查接入的应用包名和签名是否与官网注册的信息一致。
resultCode如果为其他值,请检查AndroidManifest中权限配置与接入文档是否一致,如果有做代码混淆,请检查接入文档中的混淆的语句是否加入混淆脚本,如果还返回错误,请及时沟通反馈,联系人QQ:3077973301

2.2、应用墙SDK初始化

启动应用时调用TADownloadSDKManager.getInstance().initSDK(xxx)方法进行初始化,(必须在Application里进行初始化,因为初始化是一个异步过程,需要预先进行,无法正常初始化的话会导致无法正常使用SDK的各项功能)如果未调用初始化函数,则无法正常使用SDK的各项功能。初始化的结果可以在SDKInitCallback的onInitFinished回调方法中得到,也可以调用TADownloadSdkManager getInstance().isInit()来查询SDK是否初始化完成。参数userId没有的话可以填null。SDKInitCallback的onUserTaskCompleted方法可以不实现

2.3、显示应用墙

调用TADownloadSDKManager.getInstance().showSDKView(0)来显示应用墙。

2.4、电量监控场景广告使用(可选功能)

调用
TADownloadSDKManager.getInstance().startBatteryMonitor(BatteryConditionCallback callback)来启动SDK对手机电量的监控功能,当手机电量到达SDK后台配置的弹窗条件时,会通过callback.onConditionReaced(DialogWrapper dialog)方法传递一个DialogWrapper对象,开发者可以根据需要通过调用DialogWrapper.show(Activity activity)方法来让广告弹窗显示,简单的示例代码如下:

TADownloadSdkManager.getInstance().startBatteryMonitor(new BatteryConditionCallback() {
   @Override
   public void onConditionReached(DialogWrapper dialog) {
      dialog.show(MainActivity.this);
   }
});
	

也可以调用DialogWrapper.dismiss()方法来关闭弹窗
如果要停止SDK对手机电量的监控功能,则可以调用TADownloadSDKManager.getInstance().stopBatteryMonitor()方法。

2.5、Push功能接入(可选功能)

Push分为下载安装等本地Push和运营push两种,本地push和应用墙搭配使用,积分墙不能接入。运营push则积分墙和应用墙都可以接入。

2.5.1 本地push接入

先在AndroidManifest中注册Serivce如下

<service android:name="com.tencent.assistant.push.PushService" />
	

然后调用TADownloadSDKManager.getInstance().startLocalPush(int smallIcon, int tickerIcon)方法,参数smallIcon是用来设置notification的smallIcon属性的,tickerIcon是用来设置ticker显示时的icon的,由于Android系统的限制tickerIcon的尺寸有如下规则,否则会显示不全

yingyongbaoliulianglianmengjieru_09.png
如果不遵循该规则,则在部分手机上可能出现如下现象:
yingyongbaoliulianglianmengjieru_10.png

2.5.2 运营push接入

先在AndroidManifest中注册Service和Receiver如下

<service android:name="com.tencent.assistant.push.PushService" />
	
<receiver android:name="com.tencent.assistant.timer.ScheduleJobReceiver">
    <intent-filter android:priority="1000">
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="com.tentcent.superapp.action.SCHEDULE_JOB" />
        <action android:name="android.intent.action.SCREEN_ON" />
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

然后调用TADownloadSDKManager.getInstance().startOperatePush(int smallIcon, int tickerIcon)接口,参数解释如上,另注:如果先调用了本地Push接口再调用这个,参数会互相覆盖,反之亦然。

3、应用墙接入注意事项

3.1 appkey和appsecret必须使用分配的,否则无法正常使用SDK

3.2 apk必须用申请时的签名文件进行签名,否则无法正常使用SDK

3.3 初始化失败常用错误码说明如下

SDKInitResult:定义一些常用的初始化返回码和返回内容,说明如下:
resultCode==0,初始化成功
resultCode==-1,网络不通
resultCode==-2,认证失败,请检查appKey和appSecret传入是否正确,请检查接入的应用包名和签名是否与官网注册的信息一致。
resultCode如果为其他值,请检查AndroidManifest中权限配置与接入文档是否一致,如果有做代码混淆,请检查接入文档中的混淆的语句是否加入混淆脚本,如果还返回错误,请及时沟通反馈,联系人QQ:3077973301

以上信息是否解决您的问题?

Copyright © 1998 - 2017 Tencent. All Rights Reserved.

腾讯公司 版权所有

有问必答 返回顶部