更新记录

1.0.1(2026-09-20) 下载此版本

新版本发布


平台兼容性

yqy-sfa-sdk v1.0.0 交付包 & 接入指南

悦权益转发SDK——安卓短信监听透传管道。收到短信 → 把整条原文与 accessToken / sessionId / phoneNo 一起 POST 到服务端,所有解析 / 匹配 / 会话校验逻辑由服务端实现。

一、交付包内容

文件 用途
nativeplugins/yqy_sfa_sdk/(含 aar) 必须整合进 uni-app 工程 —— 唯一运行时本体(自含 Kotlin 运行时,约 97KB)
h5/yqy-sfa.js H5 统一调用层(双通道自动适配)
h5/webview-relay.js uni-app <web-view> 宿主的 H5→原生中转件
SmsForwarderModule.d.ts TypeScript 类型声明(IDE 智能提示,可选)

二、最快接入(uni-app,三分钟)

① 拷入插件目录

nativeplugins/yqy_sfa_sdk/ 整个文件夹放入工程根目录的 nativeplugins/ 下。

② manifest.json 声明

"app-plus": {
    "nativePlugins": {
        "yqy_sfa_sdk": {
            "__plugin_info__": {
                "name": "yqy_sfa_sdk",
                "version": "1.0.0",
                "provider": "悦权益",
                "description": "悦权益转发SDK"
            }
        }
    }
},
"distribute": {
    "android": {
        "permissions": [
            "<uses-permission android:name=\"android.permission.RECEIVE_SMS\"/>",
            "<uses-permission android:name=\"android.permission.INTERNET\"/>"
        ]
    }
}

③ 制作自定义调试基座

HBuilderX → 运行 → 运行到手机或模拟器 → 制作自定义调试基座(首次)。以后每次换 aar 必须:bump 插件版本号 → 删除 unpackage/debug/ → 重做基座,否则 requireNativePlugin 静默 null。

三、unipp 原生页面 API(全部方法)

const sdk = uni.requireNativePlugin('yqy_sfa_sdk')

// ---------- 初始化 ----------
sdk.init({}, res => { /* {ok, version, granted, listening} */ })

// ---------- 权限 ----------
sdk.hasPermission({}, res => { /* {granted: true|false} */ })
sdk.requestPermission({}, res => { /* {granted: true|false, reason?} */ })

// ---------- 转发参数 ----------
sdk.setForwardParams({ accessToken, sessionId, phoneNo }, res => {})
// 设置后即长期有效,直到下次覆盖

// ---------- 转发环境 ----------
sdk.setEnvironment({ env: 'prod'|'dev' }, res => { /* {env, url} */ })
// prod: https://yqy.yuejf.cn / dev: http://192.168.110.12:8080

// ---------- 监听 ----------
sdk.start({}, res => { /* {listening:true} */ })
sdk.stop({}, res => {})
sdk.isListening({}, res => { /* {listening:bool} */ })

// ---------- 测试 / 统计 ----------
sdk.injectSms({ sender?, body }, res => { /* 绕过系统广播注入一条短信 */ })
sdk.getStats({}, res => { /* {stats:{received/forwarded/skipped/failed},listening,env,url} */ })

全局事件plus.globalEvent.addEventListener):

事件名 回调载荷
smsf:received {sender,body,timestamp,simSlot}
smsf:forwarded {status:'FORWARDED',sessionId,phoneNo,sender,httpCode,httpBody}
smsf:skipped {status:'DUPLICATED'|'HTTP_FAILED'|'ERROR',reason,httpCode?,httpBody?}

四、H5 页面桥(双通道,与原生 API 完全同构)

通道① 宿主自建 Android WebView

webView.settings.javaScriptEnabled = true
SmsForwarder.attachH5Bridge(webView, forwardEvents = true)
webView.loadUrl("https://你的H5页面/")

通道② uni-app <web-view> 组件

H5 侧

<script src="uni.webview.js"></script>
<script src="yqy-sfa.js"></script>

uni.webview.js 建议从 npm @dcloudio/uni-webview-js 安装并本地内置)

宿主 vue 页面

<web-view :src="h5Url" @message="onH5Message"></web-view>
import { makeRelay, forwardEventsTo } from '@/h5/webview-relay.js'
export default {
    methods: { onH5Message(e) { makeRelay(this)(e) } },
    onReady() { forwardEventsTo(this) }
}

H5 统一调用(两个通道写法相同):

YqySfa.transport()               // 'native' (通道①) | 'uni-webview' (通道②)
await YqySfa.init()               // {version, granted, listening}
await YqySfa.requestPermission()  // {granted:true|false}  15s 轮询
await YqySfa.setForwardParams({accessToken,sessionId,phoneNo})
await YqySfa.setEnvironment('dev')
await YqySfa.start()
await YqySfa.injectSms('10086', '正文')
YqySfa.on('forwarded', e => {})   // 事件订阅
YqySfa.on('skipped', e => {})

五、服务端协议

POST {环境地址}/api/v1/auth/smsinfo
Authorization: Bearer <accessToken>  ← 仅以此头鉴权,token 空时无此头
Content-Type: application/json; charset=utf-8

{
  "sessionId": "业务下发的会话标识",
  "phoneNo":   "本机号码(可为空)",
  "content":   "短信完整原文(不做任何解析)",
  "sender":    "发件人号码(系统广播自带)"
}

六、环境地址

环境 完整端点
prod(默认) https://yqy.yuejf.cn/api/v1/auth/smsinfo
dev http://192.168.110.12:8080/api/v1/auth/smsinfo

七、常见问题

问题 答案
requireNativePlugin 返回 null 基座未含插件 / 插件版本未 bump;重做自定义基座
H5 页面 环境不支持 uni.webview SDK 未加载或 CDN 不可达——本地内置 SDK
App 更新后 JS 逻辑不生效 调试基座会缓存外部资源——删除 /sdcard/Android/data/<pkg>/apps/ 子目录
dev 环境 401 accessToken 无效,使用真实登录态 token
dev 环境连接超时 确认 Mac 网关服务运行中 (lsof -i :8080)
Android 16 服务商短信不接收 平台安全层分类抑制(详见项目记忆)

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Receive_SMS

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

采集自家app下发短信做服务健康检查 地址:yqy.yuejf.cn gateway

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。