-
Notifications
You must be signed in to change notification settings - Fork 29
YouzanBrowser简介
SDK提供了YouzanBrowser
进行页面加载
在调用
YouzanBrowser
进行页面加载之前需要先初始化SDK。
YouzanBrowser的结构图, 如下所示:
YouzanBrowser
是自定义视图类, 开发者也可以在布局文件中使用:
- 腾讯X5版本的YouzanBrowser
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.youzan.androidsdkx5.YouzanBrowser
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
- Android原生版本的YouzanBrowser
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.youzan.androidsdk.basic.YouzanBrowser
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
下文使用
mView
表示YouzanBrowser
的实例
开始使用
YouzanBrowser
之前一般都需要注册事件,详情看 事件
YouzanBrowser
实质上是一个WebView,支持WebView
的所有操作,重写shouldOverrideUrlLoading
方法:
YouzanBrowser youzanBrowser = new YouzanBrowser(this);
youzanBrowser.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// TODO: override url, return true or false
return super.shouldOverrideUrlLoading(view, request);
}
});
注意:当使用腾讯X5内核版本时,相关类的导包要注意使用腾讯x5的包
YouzanBrowser实现了YouzanClient
接口, 这里对这个通用对外调用接口进行说明.
加载给定的链接
final String url = "https://h5.youzan.com/xxxx";
//店铺链接, 可以从有赞后台`店铺=>店铺概况=>访问店铺`复制到相应的链接
mView.loadUrl(url);
重新加载当前页面 说明: 可将
YouzanBrowser
嵌套在SwipeRefreshLayout内实现下拉刷新.
订阅事件 说明: 基于发布订阅模式设计的事件回调, 当用户进行操作触发相应事件开发者需要实现.
现SDK内可供订阅的事件见开放事件
同步用户态 可使用以下方式同步状态
YouzanSDK.sync(context, token);
Browser.reload(data);
说明:
当认证事件被触发时, 开发者需要将认证信息拼装成YouzanToken
对像通过sync()
方法回传, 并在相应的页面进行刷新. SDK在获取YouzanToken
后会进行本地缓存, 直到相关的认证信息失效后认证事件再次被触发再次自行同样的逻辑.
同步用户未登录状态
说明:
当认证事件被触发时, 如果用户选择不登录,则需调用syncNot()
方法告知SDK。SDK内部会将当前页面重置或者回退。当syncNot()
返回false
时,需要外部处理。这意味着当前加载页面一定需要登录,如果不登录就不能进入,此时需要将当面界面finish
.
获取当前页面类型
返回值:
/**
* 未知类型, 当页面处于加载中的状态时可能为该类型
*/
int PAGE_TYPE_UNKNOWN = 0x0;
/**
* 页面主要是由{@link android.webkit.WebView}加载的html5页面构成.
*/
int PAGE_TYPE_HTML5 = 0x01;
说明:
使用YouzanBrowser
返回值固定为YouzanClient.PAGE_TYPE_HTML5
.
返回上一页
说明:
区别于WebView.goBack()
, 建议使用该方法回访上一页. 代码实践如下:
@Override
public void onBackPressed() {
if (!mView.pageGoBack()) {
super.onBackPressed();
}
}
判断是否可以返回上一页
说明:
区别于WebView.canGoBack()
, 配合pageGoBack()方法使用.
分享页面, 触发分享事件
说明:
在页面加载完成后, 调用本方法会向H5发送分享事件以获取当前页面的分享信息.
传入文件选择数据
说明:
当前文件选择事件被触发时, 开发者去实现具体的打开文件选择器. 如果是在新的页面打开文件选择器, 则需要在onActivityResult
中回传数据. 代码实践如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
//...
mView.receiveFile(requestCode, data);
}
}
获取当前页面的标题
说明:
在页面加载完成后(页面状态事件), 调用本方法才会返回正确数据.
获取当前页面的链接
说明:
在页面加载完成后(页面状态事件), 调用本方法才会返回正确数据.
拦截图片保存功能, 根据业务判断是否需要该功能
view.setSaveImageListener(new SaveImageListener() {
@Override
public boolean onSaveImage(WebView.HitTestResult result) throws ActivityNotFoundException {
return true
}
});