1.4.17 • Published 10 months ago

finclip-js-sdk v1.4.17

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
10 months ago

finclip-js-sdk

web-view 网页中可使用 finclip-js-sdk 提供的接口与小程序/APP 进行交互

支持的接口有:

接口名称说明最低版本
ft.miniProgram.navigateTo参数与小程序接口一致1.0.0
ft.miniProgram.navigateBack需要delta参数1.0.0
ft.miniProgram.switchTab参数与小程序接口一致1.0.0
ft.miniProgram.redirectTo参数与小程序接口一致1.0.0
ft.miniProgram.reLaunch参数与小程序接口一致1.0.0
ft.miniProgram.postMessage向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件1.0.0
ft.miniProgram.getEnv获取当前环境1.0.0
ft.miniProgram.downloadFile下载文件1.0.0
ft.miniProgram.openDocument打开文件1.0.0
ft.miniProgram.chooseImage拍照或上传1.0.1
ft.miniProgram.getLocalImgData获取图片 base641.0.9
ft.miniProgram.close关闭小程序1.0.3
ft.miniProgram.navigateToMiniProgram跳转小程序1.0.4
ft.miniProgram.navigateBackMiniProgram返回上一个小程序1.0.4
ft.miniProgram.onShow小程序 onShow 事件注册回调1.0.6
ft.miniProgram.onHide小程序 onHide 事件注册回调1.0.8
ft.miniProgram.onUnload小程序 onUnload 事件注册回调1.0.8
ft.miniProgram.getStorage参数与小程序接口一致1.0.9
ft.miniProgram.setStorage参数与小程序接口一致1.0.9
ft.miniProgram.removeStorage参数与小程序接口一致1.0.9
ft.miniProgram.clearStorage参数与小程序接口一致1.0.9
ft.miniProgram.getStorageInfo参数与小程序接口一致1.0.9
ft.miniProgram.canGoBack当前 H5 页面是否可返回上一页1.2.0
ft.miniProgram.canNavigateBack当前小程序页面是否可返回上一页1.2.0
ft.miniProgram.setNavigationBarTitle设置当前小程序页面 title1.2.0
ft.miniProgram.getAppletInfo返回当前小程序基础信息1.0.0
ft.miniProgram.request发起网络请求,参数与小程序接口一致1.3.9

示例代码

ft.miniProgram.navigateTo({url: '/path/to/page'})
ft.miniProgram.reLaunch({url: '/path/to/page'})
ft.miniProgram.postMessage({ data: 'foo' })
ft.miniProgram.postMessage({ data: {foo: 'bar'} })
ft.miniProgram.getEnv(function(res) { console.log(res.env) }) // miniprogram
// 判断环境的另一个方法
window.__fcjs_environment === 'miniprogram'
ft.miniProgram.downloadFile({ 
    url,
    header,
    timeout,
    filePath
})
ft.miniProgram.openDocument({ 
    filePath,
    fileType
})
ft.miniProgram.chooseImage({
    count: 1, // 默认9
    sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
    success: (res) => {
        console.log(res);
    }
})
// 同步方式判断当前H5运行环境
console.log(window.__fcjs_environment) // miniprogram
// 关闭小程序
ft.miniProgram.close()
ft.miniProgram.navigateBackMiniProgram({
    extraData: {},
    success: function (res) {
        console.log('navigateBackMiniProgram success callback:');
        console.log(res);
    }
});
ft.miniProgram.navigateToMiniProgram({
    appId: '',
    success: function (res) {
        console.log('navigateToMiniProgram success callback:');
        console.log(res);
    }
});
// 获取当前 H5 页面是否可以返回上一页
ft.miniProgram.canGoBack({
    success: function (res) {
        console.log(res);
    }
});
// 获取小程序是否可以返回上一页
ft.miniProgram.canNavigateBack({
    success: function (res) {
        console.log(res);
    }
});
// 设置小程序页面 title
ft.miniProgram.setNavigationBarTitle({
    title: 'page title'
});

window.ft.miniProgram.onShow((res)=>{
    console.log(res)
    // res.data表示当前小程序路由query
})
window.ft.miniProgram.onHide((res)=>{
    // Do Some Thing
})
window.ft.miniProgram.onUnload((res)=>{
    // Do Some Thing
})
window.ft.miniProgram.getAppletInfo({
    success: (res) => {
        console.log('getAppletInfo',res);
        // {
        //     appAvatar = "小程序图标地址";
        //     appDescription = "小程序的描述信息";
        //     appId = "小程序id";
        //     path = "点击转发时的小程序页面路径";
        //     appThumbnail = "小程序封面图的路径,可能是网络路径或者本地路径,宽高比是5:4";
        //     appTitle = "小程序名称";
        //     userId = "小程序开发者id";
        // }
    }
})
window.ft.miniProgram.chooseImage({
    count: 1, // 默认9
    sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
    success: (res) => {
      console.log(res);
      window.fc.miniProgram.getLocalImgData({
        path: res.tempFilePaths[0],
        success: (res) => {
          console.log(res)
        }
      })
    }
})

window.ft.miniProgram.request({
    url: 'https://some.url',
    method: 'GET',
    data: {
      param1: 'test'
    },
    success: function (res) {
      console.log('success', res)
    },
    fail: function (res) {
      console.log('fail', res)
    },
    complete: function (res) {
      console.log('complete', res)
    }
})

2. FinClip 特有接口

接口名称说明最低版本
window.ft.miniProgram.callNativeAPIH5页面调用原生api1.4.1
window.ft.miniProgram.registNativeAPIHandler注册原生调用H5中的api1.4.1
window.ft.miniProgram.onWebviewEvent监听小程序发送的事件1.4.1
window.ft.miniProgram.offWebviewEvent移除监听小程序发送的事件1.4.1
window.ft.miniProgram.sendWebviewEvent触发 webview 标签绑定的 bindevent 方法1.4.1

2.1 H5页面调用原生api

示例接口名:js2AppFunction

2.1.1 iOS 示例

[[FATClient sharedClient] fat_registerWebApi:@"js2AppFunction" handle:^(id param, FATExtensionApiCallback callback) {
        NSString *name = param[@"name"];
//        id params = param[@"data"];
        if ([name isEqualToString:@"getLocation"]) {
            // 执行定位逻辑
            
            // 返回结果给HTML
            NSDictionary *dict = @{@"errno":@"403", @"errmsg":@"无权限", @"result": @{@"address":@"广东省深圳市南山区航天科技广场"}};
            callback(FATExtensionCodeSuccess, dict);
        } else if ([name isEqualToString:@"getColor"]) {
            // 执行其他逻辑
            
            // 返回结果给HTML
            NSDictionary *dict = @{@"r":@"110",@"g":@"150",@"b":@"150"};
            callback(FATExtensionCodeSuccess, dict);
        }
    }];

2.1.2 Android 示例

api示例

public class WebApi extends BaseApi {


    public WebApi(Context context) {
        super(context);
    }

    @Override
    public String[] apis() {
        return new String[]{"js2AppFunction"}; //api名称
    }

    @Override
    public void invoke(String event, JSONObject param, ICallback callback) {
        // 调用方法时原生对应的操作
    }
}

Kotlin

FinAppClient.extensionWebApiManager.registerApi(WebApi(this))

Java

FinAppClient.INSTANCE.getExtensionWebApiManager().registerApi(new WebApi(this));

2.1.3 html 示例

在HTML内引用我们的桥接JSSDK文件,即可调用上面的注册的方法了。HTML内调用注册的方法示例:

window.ft.miniProgram.callNativeAPI('js2AppFunction', {name:'getLocation'}, (result) => {
    console.log(result)
});

2.2 原生调用html中的方法

示例接口名:app2jsFunction

2.2.1 iOS 中 API

原生端调用如下API来调用HTML中的JS函数:

NSString *jsonParams = @""; //这里应该是参数字典转换成的json字符串。
NSNumber *pageId = @(1234); //这里是HTML中传过来的pageId
[[FATClient sharedClient] fat_callWebApi:@"app2jsFunction" paramString:jsonParams pageId:pageId handler:^(id result, NSError *error) {
        
}];

2.2.2 Android 中 API

/**
 * 原生调用JS函数
 *
 * @param appId 小程序id
 * @param funcName JS函数名
 * @param funcParams JS函数参数
 * @param webViewId WebView的id
 * @return 函数调用结果,以[Single]<[String]>的形式返回
 */
fun callJS(appId: String, funcName: String?, funcParams: String?, webViewId: Int): Single<String?>

调用示例Kotlin

FinAppClient.appletApiManager.callJS("appId", "app2jsFunction", "funParams", 1)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({
            context.toast("callJs successfully : $it")
        }) { Log.d(TAG, "callJs failed : ${it.localizedMessage}") }

Java

FinAppClient.INSTANCE.getAppletApiManager().callJS("appId", "app2jsFunction", "funParams", 1)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
                result -> Toast.makeText(context, "callJS successfully : " + result, Toast.LENGTH_SHORT).show(),
                throwable -> Toast.makeText(context, "callJS failed : " + throwable.getLocalizedMessage(), Toast.LENGTH_SHORT).show()
        );

2.2.3 html 中 API

同样的HTML中引用桥接用的JS文件,然后在HTML里注册好方法,比如方法名叫app2jsFunction。

window.ft.miniProgram.registNativeAPIHandler('app2jsFunction', function(res) {
    // app2jsFunction callback
})

2.3 H5 页面发送事件给小程序

2.3.1 H5

// H5 页面
window.ft.miniProgram.sendWebviewEvent({
  test: 123
})

2.3.2 小程序

逻辑层

// 小程序 /pages/index/index.js
Page({
  onEvent(e) {
    console.log(e.detail.test) // 123
  },
})

视图层

<!-- 小程序 /pages/index/index.fxml -->
<web-view src="https://xxx.xxx" bindevent="onEvent"></web-view>

2.4 小程序发送事件给 H5 页面

2.4.1 H5

function onEvent(e) {
  console.log(e.test) // 123
}
// 注册监听
window.ft.miniProgram.onWebviewEvent(onEvent)
// 移除监听
window.ft.miniProgram.offWebviewEvent(onEvent)

2.4.2 小程序

ft.sendWebviewEvent({ test: 123 })
1.4.17

10 months ago

1.4.16

10 months ago

1.4.15

11 months ago

1.4.14

12 months ago

1.4.13

1 year ago

1.4.12

1 year ago

1.4.11

2 years ago

1.4.6-alpha.4

2 years ago

1.4.6-alpha.5

2 years ago

1.4.6-alpha.3

2 years ago

1.4.6-alpha.6

2 years ago

1.4.6-alpha.7

2 years ago

1.4.9-alpha.1

2 years ago

1.4.9-alpha.2

2 years ago

1.4.9

2 years ago

1.4.8

2 years ago

1.4.10

2 years ago

1.4.7

2 years ago

1.4.9-alpha.8

2 years ago

1.4.9-alpha.3

2 years ago

1.4.9-alpha.5

2 years ago

0.7.0

2 years ago

1.4.5

2 years ago

1.4.4-alpha.7

2 years ago

1.4.4-alpha.6

2 years ago