该文档主要集中客户在集成开发SDK过程中遇到的问题,后续会陆续更新。
注:以下SDK未作特殊说明,均指KF5AndroidSDK。
问题1:
原因分析:这种问题的出现由于Android Studio的Gradle配置不正确所致,当前问题多出现在Mac系统中的Android Studio。
答:找到全局Gradle,查看是否有以下配置;若没有,加上再次编译。
allprojects { repositories { jcenter() } }
问题2:
java.lang.ClassNotFoundException:org.support.imageloader.core.assist.ImageScaleType。
原因分析:应该是应用程序方法总数超出了65535限制;
答:1.找到App目录下的Gradle文件(如下图),添加multiDexEnabled true配置;
2.在应用程序中Application类中添加MultiDex.install(this);然后编译打包。
问题3:com.chosen.kf5sdk/kf5sdklibrary/1.3.2/AndroidManifest.xml;Suggestion: use tools:overrideLibrary="com.kf5sdk.library" to force usage
原因分析:由于SDK的minSdkVersion版本与项目中minSdkVersion版本不一致;
答:根据Suggestion意思,在AndroidManifest.xml文件中Application标签中添加<uses-sdk tools:overrideLibrary="xxx.xxx.xxx"/>,其中的xxx.xxx.xxx为第三方库包
名,如果存在多个库有此异常,则用逗号分割它们,例如:<uses-sdk tools:overrideLibrary="xxx.xxx.aaa, xxx.xxx.bbb"/>,这样做是为了项目中AndroidMani
fest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制。
问题4:android.content.ActivityNotFoundException: Unable to find explicit activity class {xxx.xxx.xxx/com.chosen.kf5sdk.xxxActivity}
原因分析:SDK中Activity未在应用程序中AndroidManifest.xml声明;该异常只会出现在以Module方式导入集成的工程中,Android Studio采用Gradle集成编译不会此异常。
答:将下载的Module下的AndroidManifest.xml里声明的所有Activity以及Service以及各种Permission等全部复制到应用程序下的AndroidManifest.xml,然后编译运行;Android Studio采用Gradle集成SDK不需要再次声明,直接运行即可。
问题5:集成了SDK,混淆打包怎么配置?
答:
-keep enum com.kf5sdk.model.MessageStatu { *; } -dontwarn org.support.v4.** -keepclassmembers class * { void onEvent*(**); }
问题6:SDK是否会与我们的工程发生冲突?
答:发生冲突的是由于自己的工程与集成的第三方框架都引用了其他相同的框架;SDK对资源与组件命名都已kf5_开头,正常情况是不会出现冲突;对于集成SDK之后出现finished with non-zero exit value异常,请确认自己的工程是否与其他第三方框架发生了冲突导致编译不成功。
问题7:SDK主要包含哪些功能块?
答:SDK 目前支持创建工单、查看工单列表、查看知识库以及即时交谈。
问题8:我们目前对于SDK有些功能块暂时用不上,不知能否分包减少Apk大小?
答:为方便能够快速方便集成以及SDK开发者高效管理版本,SDK目前的包完全支持发送工单、查看工单列表、查看知识库以及即时交谈功能;不支持分包。
问题9:集成你们的SDK,需要走哪些流程?
答:使用我们的SDK,首先需要在www.kf5.com注册属于您的平台地址。然后请仔细浏览官方提供的SDK开发文档:http://developer.kf5.com/android/;SDK里的用户信息都将直接关联到您所注册的平台地址,所以前提必须先注册。
问题10:浏览了SDK的官方文档,对SDK的配置还不太清晰,请Support一下我们应该怎样使用?
答:SDK能够正常运行必须的步骤:
1. 在应用程序的Application中
调用SDK的全局初始化方法:
KF5SDKInitializer.initialize(context);
2. 调用SDK初始化用户信息的方法
KF5SDKConfig.INSTANCE.init(context, userInfo, callBack);
回调接口回调onSuccess方法,初始化用户信息合法,可在需要的时候启动SDK。
回调接口回调onFailure方法,初始化用户信息异常,请根据返回值定位问题。
初始化方法UserInfo参数详细说明:
email:当前使用SDK的用户邮箱。
phone:当前使用SDK的用户手机号,座机号是不可以的;
appid:传输秘钥,对每一个平台开发SDK时所生成的唯一的一串字符;这就是为什么使用SDK之前需要先在www.kf5.com注册平台的原因;
helpAddress:即您公司或者个人所注册的平台地址,例如helptest.kf5.com;
name:用户昵称,即是注册的平台后台所显示的当前用户的昵称;与微信昵称同理;
deviceToken:设备推送标识。即能够代表当前设备唯一性的一串字符,具有唯一性,需要推送功能才赋值,不需要推送可以不赋值。顾名思义,推送标识也就是在需要发送推送时能够通过当前标识找到有且唯一的设备。如果采用第三方的推送服务,第三方的服务有提供接口获取代表当前设备的唯一推送标识;如果公司自己搭建推送服务,则开发者自行计算或者获取(比如UUID或者getDeviceId())能够代表当前设备的唯一推送标识。
sdkName: 创建工单时工单的标题,默认值为“来自 android sdk 的工单反馈”;
verifyPriorityType :验证优先级;如果为VerifyPriorityTypePhone,则用手机号获取用户信息或者验证信息是否合法,其他都用邮箱去获取用户信息或者验证信息是否合法。
注意:当前使用SDK的用户是指当前使用App的用户,具备唯一性,email与phone是获取用户最主要的参数,请务必填写正确格式,SDK目前支持email和邮箱初始化,两者至少赋值一个;调用该方法主要获取用户信息或者验证用户信息是否合法。当后台能够查询到当前用户的相关信息,则返回用户信息,否则验证当前初始化的用户信息是否合法,主要是验证邮箱格式是否正确、手机号格式是否正确、appid是否存在、邮箱和手机号是否对号入座等等。
问题11:请问AppID从哪里得到?
答:AppID是KF5为每一个注册平台的用户在开发SDK时所生成的唯一字符串;只代表当前平台,具备唯一性。查看与生成Appid只有管理员拥有权限,具体生成方式如下:
1、 将菜单转到系统设置>移动App SDK
2.添加一个APP ,完成之后提交
注意:若启用推送,需要打开启用推送通知;填写回调函数,并且保证回调URL能够正常访问。
3. 查看APPID
问题12:请问怎么自定义TopBar的UI?
答:请浏览SDK开发文档中配置与起步第五条KF5ActivityUiConfig头部样式修改 http://developer.kf5.com/android/init/ 。
问题13:请问怎么自定义其他Activity的UI?
答: 工单模块UI设置:FeedBackActivity的UI管理类为FeedBackActivityUIConfig;
LookFeedBackActivity的UI管理类为LookFeedBackActivityUIConfig;
LookFeedBackActivity的适配器UI管理类LookFeedBackAdapterUIConfig;
FeedBackDetailsActivity的UI管理类为FeedBackDetailsActivityUIConfig;
FeedBackDetailsActivity的适配器UI管理为FeedBackDetailsAdapterUIConfig;
OrderAttributeActivity的UI管理类为OrderAttributeActivityUIConfig;
OrderAttributeActivity的适配器的UI管理类OrderAttributeAdapterUIConfig;
帮助中心模块UI设置:HelpCenterActivity、HelpCenterTypeActivity、HelpCenterTypeChildActivity的UI管理类为HelpCenterActivityUIConfig;
即时交谈模块UI设置:ChatActivity的UI管理类为ChatActivityUIConfig;
ChatActivity的适配器UI管理类为ChatAdapterUIConfig;
想把SDK整得更完美?请浏览SDK开发文档http://developer.kf5.com/android/。