跳转到内容
彼岸论坛

小天管理

管理员
  • 内容数

    16000
  • 注册日期

  • 最后上线

  • 得奖次数

    1

小天管理 发表的所有内容

  1. CPU:INTEL 13 代 i5 13600KF 盒装-14 核 20 线程 散热器: 先马 XW240 2 代(无风扇) 2.1 寸 LCD 圆屏 黑色 主板: 华硕 TUF GAMING B760M-PLUS WIFI D5 2 代 内存: 宏碁 Vestall 炫光星舰 32G 6000 16Gx2 C32 黑 固态硬盘: 伯维 NV7400 2TB PCIE 4.0 7450MB/S. 显卡:华硕 DUAL-RTX4060TI O8G 雪豹 V2 机箱:乔思伯 TK-1 星舰舱黑色 电源:安耐美 G750 金牌全模组 黑色 五年质保一年换新 风扇 4 把丛林豹 星河 T1 黑色 ARGB 风扇(含 2 把反叶)
  2. 今年 28 ,从去年初开始我基本就是每天一刮了,而且每天早上 9 点刮下午 6 点左右就冒得很明显了,感觉很麻烦,不刮的话第二天就看起来特别邋遢,我属于是冒的快,但是又长不长,可能就半厘米长度就不会长了,就很烦,你们都是咋打理的
  3. 在实际的项目开发时,打包 Docker 镜像,其实还是有些细节需要注意 例如,镜像的 name 、tag 如何更准确的表达当前代码的信息。 我认为,镜像的名字以这种格式会比较好 : 私有仓库/项目/产品-git 分支:时间-git hash 当然, 这个观点,大家可能有不同的意见,只是这个格式比较适合我们。 基于以上的想法, 可以在 package.json 的 scripts 里, 增加: // package.json { ... "scripts": { ... "build-img": "docker build -t registry.xxxxx.com/$(pwd | rev | cut -d / -f 1-2 - | rev)-$(git rev-parse --abbrev-ref HEAD):$(git log --pretty=%ad-%h --date=format:'%y%m%d%H%M' -n 1) ." ... } ... } 使用时, 直接 npm run build-img 即可, 打包出来的镜像名称类似: registry.xxxxx.com/上级目录名/当前目录名-分支名:yyMMddmmss-hash。 上面的脚本,其实有个关于代码目录的约定: 在项目的目录下,clone 各个 git 仓库的代码 . 通过上面这种方式打包镜像,好处是从镜像名称就能知道 这个镜像属于哪个项目,哪个产品,所属 git 分支,最后一次签入的时间和 hash (即代码的当前状态) 。 并且,只要代码没有变动(或者应该说,没有进行 git commit),任何时候从 仓库 clone 代码,再次打包镜像时,名称都是一致的。 简单来说, 可以保持镜像名称和 git 仓库的关系。
  4. 提交交易成功后,返回的状态是 Submitted for settlement ,看了下文档,这个状态并不是交易支付成功完成了,会在晚上统一结算完成,完成后变成 Settled 。 最终接过也有可能是 Settlement declined 。 我是做充值,是否是返回状态Submitted for settlement后就认为支付成功了呢?
  5. 有些家庭视频,想分享给家人,不想被路人看到,想问下有没有只有知道链接才能访问、网站直接搜搜不到的这种视频平台。 试过 b 站,好像没有隐匿的选项。油管可以,但家人用起来不方便。
  6. 谢谢早上大佬助力,换到背包了已经,多的积分送张 20 块的 e 卡(折现也可以) 四点半随机挑选一位大佬送(回复即可,重复的不算 没抽到的可以自己拉两个人换(小号也可以 https://www.marscode.cn/events/2024-invitation?utm_source=event_invite_code&invite_code=tfjwyRsckvjSKhhFrXfUgxWc8nudbiMB&event_id=2024_invitation
  7. 无聊逛 v 站 点来点去 发现 a 标签默认都是当前页面跳转的( target=self ) 很不爽,于是写了个 1 行代码的插件,默认都改成 target=blank 当然也可以直接控制台里面写个遍历改..我比较懒 所以写了个插件一劳永逸.. 然后没啥了..继续闲逛.. https://github.com/Bill-Pang/linkClick
  8. 组件 规格 CPU i7 12700F CPU 散热器 6 铜管散热器 主板 华硕 B760-Plus 大板 内存 DDR4 32GB ( 16GB x 2 ) 硬盘 金士顿 M.2 1TB 显卡 GTX 1660Ti 6GB (¥ 700 ) 电源 航嘉额定 650W 机箱 长城 K13 侧透
  9. 之前一直用破解版,后面不知怎么突然就闪退用不了,找到大佬给的解决方案。 1 、安装正版的 Cornerstone 4.2 官网: https://cornerstone.assembla.com/ 2 、免费试用时间是 7 天,试用期到期后,清空“com.zennaware.cornerstone3 ”文件夹,或者直接删除新建一样的文件夹,重新打开软件后,又可以继续试用。 /Users/xxx(用户名)/Library/Containers/com.zennaware.cornerstone3/Data/Library/Application Support/com.zennaware.cornerstone3/ 或者直接桌面--上面前往菜单--前往文件夹,打开 ~/资源库/Containers/com.zennaware.cornerstone3/Data/Library/Application Support/com.zennaware.cornerstone3/
  10. Hi ,这里是 Livy ,这篇帖子主要是想分享一下关于如何科学安全的将谷歌苹果的美金收益回款结汇。 对于中国大陆区的 AdSense/admob/GooglePlay/App store ,最安全的回款方式无非就是银行,但是银行有限额,怎么办?答案就是重庆结汇!重庆结汇是国内首家直连银行系统的渠道,真正实现资金不过任何第三方平台。 我们的优势在于: 1.没有额度限制 相比普通银行存在的个人 5 万外汇额度限制问题,重庆结汇可以根据开发者的实际经营情况来申请结算额度,无需担心 5 万美金限额问题,可满足大家大额资金结算的需求。 2.安全性高 依靠国内大银行系统,重庆结汇通过为客户办理一类实体储蓄卡进行收款结汇,资金不会过第三方平台,所有的流水明细均在银行可查。 3.便捷性高 手机银行操作结汇,无需跑柜台,不怕风吹,不怕雨淋,不担心日晒!客户经理一对一专业细心服务,我们负责帮您与银行联系!! 4.费率极低 市场费率平均千五,而我们,可以低至千三,如果您拥有 1w 美金需要结汇,即可立省 20 美金的手续费! 5.汇率优惠 结汇汇率采用银行 app 内实时汇率,结汇汇率通常高七八十 bp 左右。 如有需要可 V 我:Livy15669 或 QQ:3665384226
  11. 在 iOS 使用 onFileDownload 属性来捕获下载事件的时候,我们注意到 iframe 中的下载链接无法捕获到,会被 webview 直接加载,因此无法对其进行处理。 当前考虑过的方案,但都不理想: 1.通过 url 后缀黑白名单来处理非 TopFrame 的下载请求。 2.通过 fetch 判断 content-type 来处理非 TopFrame 的下载请求。 请问有什么比较完美的办法在 webview 层面处理好这个问题?
  12. 我通过火绒的流量监控工具,查看了历史流量,发现最近 7 天上传最多的是 Zerotier ,但是我最近基本没有使用这个软件,为什么还会后台跑了这么多流量?
  13. 我随身带的钥匙有:大门钥匙,车钥匙,门禁卡。这已经是精简后的了,放在裤子口袋里,感觉有点鼓鼓的,想问问各位彦祖,你们是怎么优雅的放钥匙的?
  14. 手里分币没有,想做个项目 老哥们给点意见。祝老哥们千万要开心,千万要健康, 千万要发财。 项目点子如下: 1. APP 名字:Only 奸臣 2. 主体功能:互联网心灵马杀鸡 3. 使用方法: 点开即用,挑选专业奸臣为您服务。 4. 场景预想: 身心疲惫,内心焦虑的时候,总想有个人鼓励自己:没事哒,没事哒,皇上您又辛苦活了一天,老臣觉得已经很棒啦! 5. 具体功能预想: 1. 啥也不想,打开 APP 就是听:使用预录好的通用版本奸臣语录,配上背景音乐,皇上闭眼安心享受即可。 2. 有所偏好,有具体应用场景:比如干工作完,使用安慰打工人的奸臣语录,配上背景音乐,皇上闭眼安心享受即 可。 3. 财大气粗,挑选奸臣在线服务: 翻牌您中意的好臣子,皇上闭眼安心享受即可。
  15. 续费日期:8 月 22 日 扣费日期:8 月 23 日 扣费 249.99 8 月 26 日收到苹果的涨价邮件 今天收到 120 的退款 应该是下个月再涨价了
  16. rt 之前买过按月收费的,感觉不合算,有按次收费的吗?求推荐,谢谢!
  17. 方案概述 功能:使用 webview 的方案,在 App 中实现视频/直播的悬浮小窗播放效果,支持应用内小窗、系统小窗,在订单页小窗播放,回到直播间小窗消失 场景:适用于要在 App 中快速实现直播带货场景,或在 App 中需要点播视频小窗播放的场景 支持环境:安卓、iOS 、鸿蒙 前置条件:使用保利威的 webview SDK Demo ,对方案有任何疑问,可+V:wjc24680525 ,备注“小窗” 一、安卓对接说明 1.1 集成简介 1.1.1 项目架构图 1.1.2 使用源码项目集成 当前将提供的源码包中的 PolyvAndroidWebViewDemo 、PLVWebViewSDK 、PLVJsBridge 、PLVFloatWindow 四个项目放入到同一目录下,然后使用编译器打开 PolyvAndroidWebViewDemo 项目即可。 1.1.3 源码集成注意事项 功能对接说明 参考 1.2 功能对接文档 更换通信协议 如果需要更换 web-native 通信协议的情况时,可以参考提供的 1.3 更换 web-native 通信规则注意事项 1.2 功能对接文档 1.2.1 功能设置 设置 Url 和 UA 在启动 PLVWebViewDemoActivity 之前,我们需要设置加载的 Url 和添加上需要用到的 Ua ,这里可以通过PLVWebViewConfig来进行设置,示例代码如下: PLVWebViewConfig config = new PLVWebViewConfig(); config.setUrl("需要加载的 url") .setUa("需要添加的 UA"); PLVWebViewDemoActivity.startWebViewDemoActivity(PLVURLInputActivity.this, config); 设置小窗边框颜色 当前 SDK 支持设置小窗边框颜色,通过PLVFloatWindowManager进行设置,示例代码如下: PLVFloatWindowManager.getInstance().setSolidColor(Color.RED); 1 )设置小窗边框厚度 当前 SDK 支持设置小窗边框颜色,通过PLVFloatWindowManager进行设置,示例代码如下: PLVFloatWindowManager.getInstance().setSolidWidth(20); 2 )设置自动开启小窗功能 当进程退到后台时会自动唤出小窗(默认关闭),通过PLVFloatWindowManager进行设置,示例代码如下: PLVWebViewConfig config = new PLVWebViewConfig(); config.setSupportAutoFloating(true); // 开启自动开启小窗功能 PLVWebViewDemoActivity.startWebViewDemoActivity(PLVURLInputActivity.this, config); 3 )使用系统/应用小窗 当前小窗支持系统小窗和应用窗(默认使用系统小窗),如果开启系统小窗需要请求小窗悬浮权限,而应用小窗不需要请求权限,注意应用小窗依赖于 Activity ,当 Activity 被销毁时,应用小窗也会被关闭。 PLVWebViewConfig config = new PLVWebViewConfig(); config.isSystemFloatingWindow(true);// 为 true 时使用系统窗,false 为使用应用小窗 PLVWebViewDemoActivity.startWebViewDemoActivity(PLVURLInputActivity.this, config); 4 )使用原生/web 弹出请求权限窗 当前 sdk 支持通过原生或 web 端来弹出请求悬浮权限弹窗(默认使用原生弹窗方式)。 注意如果是选择使用 web 端来弹窗请求悬浮权限弹窗,需要 web 端支持对应的事件。 PLVWebViewConfig config = new PLVWebViewConfig(); config.setUseWebRequestPermission(true);// 为 true 时 web 弹窗,false 为使用原生弹窗 PLVWebViewDemoActivity.startWebViewDemoActivity(PLVURLInputActivity.this, config); 1.2.2 监听方法 js 事件 SDK 内部已经定义了一部分与 web 端通信的 js 事件,这些通信事件可以在 demo 层中重写某些方法进行监听和拦截处理,这里以监听 onShare 事件进行为例: public class PLVWebViewDemoActivity extends PLVWebViewBaseActivity { @Override public void onShare() { // 监听到 onShare 事件的处理 ... super.onShare(); } } 可以选择需要监听的 js 事件进行重写实现对事件的监听。 注意:这些 js 通信事件都是与 webview 关联,开启系统小窗后,即使 Activity 被销毁依然能收到来自 web 端发送的消息,触发这些方法,所以重写这些方法时,尽量避免做与 Activity 生命周期关联的操作 允许的监听 js 事件 当前支持通过重写方法来监听事件; 有以下这些方法: /** * 点击商品,将切换到小窗时会触发该回调 * * @param width 小窗的宽 * @param height 小窗的高 * @param newPage 是否打开新的一页 * @param link 打开新的一页加载的 url * @param data 其他更多数据,开发者可根据需要自定义实现逻辑,数据为 json 格式 */ void changeToWindowForProduct(int width, int height, boolean newPage, String link, String data); /** * 用户主动调用切换到小窗的方法,在切换前会触发该回调 * * @param width 小窗的宽 * @param height 小窗的高 */ void changeToWindowForUser(int width, int height); /** * 点击小窗区域,从小窗中恢复到页面触发该回调 **/ void changeToNormal(); /** * 点击小窗关闭按钮,关闭小窗触发该回调 **/ void closeWindow(); /** * 点击返回事件 */ void onGobackPressed(); /** * 横置屏幕事件 */ void onLandScreen(); /** * 竖直屏幕事件 */ void onPortraitScreen(); /** * 分享事件 */ void onShare(); /** * 收藏事件 */ void onCollect(); /** * 隐藏状态栏,进入沉浸模式 */ void hideNavigationBar(); /** * 显示状态栏,退出沉浸模式 */ void showNavigationBar(); /** * 打开悬浮窗权限页面 */ void requestFloatWindowPermissionByWeb(); /** * 发送当前小窗的打开状态给前端 */ void getFloatWindowStatus(); /** * 获取当前的网路状态 */ void getCurrentNetworkStatus(); /** * 设置是否开启自动悬浮窗权限 * @param enable true 为打开,false 为甘比 */ void setEnableBackground(boolean enable); /** * 获取是否开启了自动悬浮窗的权限 */ void getEnableBackground(); /** * 处理其他 event */ void handleOtherEvent(String event); 1.2.3 注册新的 js 通信事件 SDK 支持注册自定义 js 事件,可以通过下面的方式来注册自定义 js 事件,示例代码如下: @Override protected void initHandleForDemo() { //监听来自 web 端发送事件 floatableLayout.getWebView().registerHandler("监听事件", new BridgeHandler() { @Override public void handler(String s, CallBackFunction callBackFunction) {} }); //向 web 端发送对应事件和消息 floatableLayout.getWebView().callHandler("发送事件", "发送消息", new CallBackFunction() { @Override public void onCallBack(String s } }); } 注意:注册新的 js 事件时不仅需要原生端做相应的操作,还需要 web 端有注册对应的事件,否则是原生端是不会接收到对应的事件消息 1.3 更换 web-native 通信规则注意事项 1.3.1 说明 当前 SDK 内部是通过 Jsbridge 该库来实现 web 端与原生端的通信,Jsbridge 中定义了 web 端与原生的通信规则,如果集成项目是没有制定指定的 web-native 通信规则,那么可以直接使用 SDK 的通信规则即可,无需其余改动。 如果集成项目中有定制指定的 web-native 通信规则,可以参考下面的方式进行修改。 无论是使用哪一种通信规则,关键在于原生端发送/接收 web 端消息,web 端发送/接收原生端消息,所以当需要更换 SDK 内部的 web-native 通信规则仅关注上述的两点即可。 1.3.2 更换 native 端通信规则 因为 sdk 内部是依赖于 jsbridge 该模块实现 web-native 通信,当需要更换通信规则时,可以选择不依赖该模块。 1.3.3 更改 PLVBaseWebView 继承类 public class PLVBaseWebView extends BridgeWebView { .... } 可将 PLVBaseWebView 继承的 BridgeWebView 更换为集成项目中指定通信规则的 webview 。 1.3.4 更改 WebViewClient WebViewClient 是实现原生端接收 web 端消息的关键,也是定制修改 webview 的核心部份,所以在更换通信规则时也需要更换 WebViewClient //替换自己需要用到的 WebViewClient webView.setWebViewClient(webviewClient); 可以通过 setWebViewClient(new WebViewClient() 方法为 webview 设置指定 WebViewclient 。 1.3.5 更改原生端发送/接收 web 端消息的方法 更换发送消息方式 public void callMessage(String type, String message) { //当使用的新的 web-native 规则时,可以将下面的代码修改为 webview 使用新规则发送消息时的代码 webview.callHandler(type, message, new CallBackFunction() { @Override public void onCallBack(String s) { ... } }); } 当前 SDK 内部时通过 webview.callHandler()方法来实现消息的发送,当更换新的通信规则时,可以将这个 webview.callHandler()方法替换为新规则中对应原生端发送消息的方法。 更换接收 web 端消息 webview.registerHandler("xxx", new BridgeHandler() { @Override public void handler(String s, CallBackFunction callBackFunction) { ... } }); 当前 SDK 内部是通过 webview.registerHandler()方法来监听 web 端发送的消息,当更换新的通信规则时,可以将这个 webview.registerHandler()方法替换为新规则中对应原生端接收 web 消息的方法。 1.3.6 更换 web 端通信规则 web-native 通信规则是由 web 端和原生端两端定制的,所以当更换 web-native 通信规则不仅需要原生端更换,web 端也需要进行更换。 注意事项 当前需要通信的 web 页面 与 更换通信规则后的原生端 所使用的通信规则是否是对应,如果是对应的情况下无需做其他更替。 如果需要通信的 web 页面与 更换通信规则后的原生端 所使用的不对应,那么就需要去更替 web 端的通信规则。 如 web 端页面需要使用保利威的 web 页面(当前保利威 web 页面与 sdk 内部所使用的通信规则一致,当原生端切换通信规则,那么 web 端页面也需要更换对应通信规则) 1.3.7 更换 web 端发送/接收方法 1.更改 web 端发送消息方式 window.bridge.callHandler( 'callAppEvent', message, function(responseData) { //发送消息 .... } ); 当前 SDK 内部与 Web 端对应的通信规则是通过 bridge.callHandler()方法来进行发送消息,当替换新的通信规则后,可以使用新的发送方式来取代这个 bridge.callHandler()方法 2.更改 web 端接收消息方式 // 监听来自 xxx 事件的消息 bridge.registerHandler("xxx", function(data, responseCallback) { document.getElementById("show").innerHTML = (data); }); 当前 SDK 内部与 Web 端对应的通信规则是通过 bridge.registerHandler()方法来接收消息,当替换新的通信规则后,可以使用新的发送方式来取代这个 bridge.registerHandler()方法 二、iOS 对接说明 2.1 集成简介 2.1.1 项目架构图 2.1.2 运行环境要求 名称· 要求 iOS 系统 9.0+ CocoaPods 1.11.3+ Xcode 11.0+ 2.2 快速集成 2.2.1 项目配置 配置支持系统版本 打开项目的 PROJECT - Deployment Target - iOS Deployment Target 改为 9.0 或更高。 打开项目的 TARGETS - General - Deployment Info ,把 iOS 系统改为 9.0 或更高。 2.2.2 配置 App Transport Security (ATS) 打开项目的 info.plist 文件,添加如下内容: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> </dict> 2.2.3 配置设备旋转 播放器支持全屏播放,需要在 TARGETS - General - Deployment Info 中,勾选支持的横屏旋转方向。 2.2.4 配置后台播放和画中画 打开项目的 TARGETS - Signings & Capabilities ,点击 + Capability ,选择 Background Modes ,勾选 ‘Audio, AirPlay, and Picture in Picture’。 2.3 集成 SDK 2.3.1 Pod 方式集成 集成 PLVWebViewSDK 在 Podfile 文件中,添加以下内容: pod 'PLVWebViewSDK', '~> 1.0.0' 在终端执行 pod install 集成系统小窗 如果需要使用系统小窗功能,则需要在 Podfile 文件中另外添加以下内容 # 包含系统画中画 -- 如果不使用系统小窗 则不需要下面配置 pod 'PLVAliHttpDNS', '~>1.10.0' pod 'PLVFoundationSDK', '1.10.6', :subspecs => ['BaseUtils', 'NetworkUtils', 'ErrorCode', 'LogReporter', 'ConsoleLogger', 'Reachability', 'SafeModel', 'ProgressHUD'] pod 'PLVBusinessSDK', '1.10.4', :subspecs => ['BaseBSH'] pod 'PLVLiveScenesSDK', '1.10.6', :subspecs => ['Base', 'LogReporter', 'ConsoleLogger', 'ErrorManager', 'Network', 'Player', 'BasePlayer', 'LivePlayer', 'LivePlaybackPlayer', 'PictureInPicture'] 并在终端执行 pod install,并且将对应的 PLVLiveScenesSDK 、PLVBusinessSDK 进行替换。 2.3.2 离线包方式集成 集成 PLVWebViewSDK 将 PLVWebViewSDK.framework 库添加到自己的项目中。如果是使用源码的方式集成,则需要将 PLVWebViewSDK 文件整个添加到自己的项目即可。 集成系统小窗 1.如果项目使用系统小窗功能则需要将以下库添加到项目中 PLVAliHttpDNS 、PLVBusinessSDK 、PLVFoundationSDK 、PLVIJKPlayer 、PLVLiveScenesSDK 2.在 General => Frameworks ,Libraries ,and Embedded Content 中移除已添加的 PLVFoundationSDK.framework 、PLVLiveScenesSDK.framework 、PLVBusinessSDK.framework 库,并添加系统库 libresolv.tbd 。 3.设置 PLVIJKPlayer 为 Embed & Sign 4.Build Settings ,Other Linker Flags 中添加 -ObjC ,如果项目已配置有,则不需要重复添加 5.运行报错 如果模拟器运行报错需要在 Build Settings 中设置 Excluded Architecture => Any iOS Simulator SDK 为 arm64 如果运行报错 Building for iOS Simulator, but the linked and embedded framework '***' was built for iOS + tvOS Simulator 可在 Build Settings 中 设置 VALIDATE_WORKSPACE 为 YES 即可。 2.4 WebView 接入 创建想要展示 WebView 的控制器页面 DemoViewController 继承于PLVWebViewBaseViewController,并通过初始化方法 -initWithConfig:创建控制器页面。示例代码如下: // PLVWebViewDemoViewController.h #import <PLVWebViewSDK/PLVWebViewSDK.h> @interface PLVWebViewDemoViewController : PLVWebViewBaseViewController @end 初始化时可通过重写 initHandleForDemo 进行自定义配置,同时可以对 Bridge 事件进行自定义处理。示例代码如下: // PLVWebViewDemoViewController.m @implementation PLVWebViewDemoViewController #pragma mark - [ Override ] - (void)viewDidLoad { [super viewDidLoad]; } /// 初始化时,可以进行的自定义配置 //- (void)initHandleForDemo { // //} #pragma mark - [ Delegate ] #pragma mark PLVFloatableWebViewBridgeDelegate /// 如需要监听 js 回调事件,可以通过 Delegate 事件进行相应的处理,例如 webviewBridgeShare 消息 //- (void)webviewBridgeShare:(PLVFloatableWebViewBridge *)bridge { // //} @end 创建、配置、打开直播页面控制器 PLVWebViewConfig *config = [[PLVWebViewConfig alloc] init]; config.urlString = urlString; config.allowFloatingWindow = YES; config.isSystemFloatingWindow = NO; config.userAgent = self.uaTextView.text; config.enableAutoFloatWindow = YES; PLVWebViewDemoViewController *webVC = [[PLVWebViewDemoViewController alloc] initWithConfig:config]; [self.navigationController pushViewController:webVC animated:YES]; 2.5 高级功能 2.5.1 WebView 配置 创建 PLVWebViewBaseViewController 时需要根据 PLVWebViewConfig 配置来进行初始化。 PLVWebViewConfig *config = [[PLVWebViewConfig alloc] init]; config.urlString = @""; config.allowFloatingWindow = YES; config.isSystemFloatingWindow = NO; config.userAgent = @""; config.enableAutoFloatWindow = YES; PLVWebViewDemoViewController *floatingWebVC = [[PLVWebViewDemoViewController alloc] initWithConfig:config]; allowFloatingWindow 是否允许使用浮窗的功能 isSystemFloatingWindow 使用系统小窗或者应用内小窗 userAgent 浏览器的 UA ,可自行修改 enableAutoFloatWindow 开启自动浮窗,开启后 在退出页面或者退到后台时会自动开启小窗 2.5.2 应用内小窗配置 我们还可以对浮窗的大小、默认位置、以及样式进行配置修改: // 配置浮窗大小 [[PLVFloatWindowManager sharedManager] setFloatingWindowSize:size]; // 配置浮窗初始位置 [[PLVFloatWindowManager sharedManager] setFloatingWindowLocation:point]; // 应用内小窗样式修改 UIView *appWindowView = [PLVFloatWindowManager sharedManager].floatingWindow; appWindowView.layer.cornerRadius = 8.0f; appWindowView.layer.masksToBounds = YES; 其中,调用 -moveContentViewToWindow:size: 方法主动唤起的浮窗,默认宽度为屏幕的 0.3 倍,宽高比 16:9 。通过保利威的网页唤起浮窗,浮窗大小由网页告知。初始位置是指浮窗右下角距离屏幕右下角的相对位置,默认为(-10, -100), 表示悬浮窗右边沿距离屏幕右边沿 10pt ,下边沿距离屏幕下边沿 100pt 。 2.5.3 画中画配置 如果要使用画中画功能,首先需要在 Podfile 文件中 添加支持画中画的 SDK ,然后执行 pod install; # 包含系统画中画 -- 如果不使用系统小窗 则不需要下面配置 pod 'PLVAliHttpDNS', '~>1.10.0' pod 'PLVFoundationSDK', '1.10.6', :subspecs => ['BaseUtils', 'NetworkUtils', 'ErrorCode', 'LogReporter', 'ConsoleLogger', 'Reachability', 'SafeModel', 'ProgressHUD'] pod 'PLVBusinessSDK', '1.10.4', :subspecs => ['BaseBSH'] pod 'PLVLiveScenesSDK', '1.10.6', :subspecs => ['Base', 'LogReporter', 'ConsoleLogger', 'ErrorManager', 'Network', 'Player', 'BasePlayer', 'LivePlayer', 'LivePlaybackPlayer', 'PictureInPicture'] 替换对应的离线包 用提供的离线包PLVLiveScenesSDK 、PLVBusinessSDK 将 Pods 文件夹下对应的 SDK 进行替换。 2.5.4 UA 和白名单配置 当开启了 enabelWhiteList 后,只有添加了域名白名单的链接才会支持原生与前端的通信,才支持小窗的功能。 [PLVUAConfigManager sharedManager].enabelWhiteList = YES; [[PLVUAConfigManager sharedManager] addHostWhitelist:@[@"live.polyv.cn"]]; 同时支持 自定义配置 UA [[PLVUAConfigManager sharedManager] addCustomUserAgent:@""]; 2.5.5 监听方法 js 事件 在 SDK 内部已经对一些事件进行了处理,如果想要自定义处理某些事件可以在 demo 中进行监听拦截处理。示例如下: #pragma mark - [ Delegate ] #pragma mark PLVFloatableWebViewBridgeDelegate /// 如需要监听 js 回调事件,可以通过 Delegate 事件进行相应的处理,例如 webviewBridgeShare 消息 - (void)webviewBridgeShare:(PLVFloatableWebViewBridge *)bridge { } 2.5.6 注册和调用自定 js 事件 可以通过 Demo 层注册和调用自定义事件,示例代码如下: - (void)initHandleForDemo { [self.contentAreaView.mainWebView.bridge registerHandler:@"" handler:^(id _Nonnull data, PLVWVJBResponseCallback _Nonnull responseCallback) { }]; [self.contentAreaView.mainWebView.bridge callHandler:@"" data:nil responseCallback:^(id _Nonnull responseData) { }]; } 2 .6 更换 web-native 通信规则注意事项 本项目中使用的是开源库 WebViewJavascriptBridge 来实现 web 和 native 之间的通信。如果接入的项目中没有用到 web-native 通信,则不需要做任何调整。如果接入的项目中也用到 web-native 通信,则可以参考下面的方式进行修改。 2.6.1 更换 native 端通信规则 SDK 中使用的 WebViewJavascriptBridge 来实现通信的,在 PLVFloatableWebViewBridge 中对其进行了封装处理,如果需要更换 native 端通信规则只需要修改 PLVFloatableWebViewBridge 这个类即可 更换注册消息方式: - (void)registerHandler:(NSString*)handlerName handler:(WVJBHandler)handler { //当使用的新的 web-native 规则时,可以将下面的代码修改为 webview 使用新规则注册消息时的代码 [self.bridge registerHandler:handlerName handler:handler]; } 更换发送 web 端消息 - (void)callHandler:(NSString*)handlerName data:(id _Nullable)data responseCallback:(WVJBResponseCallback _Nullable)responseCallback { //当使用的新的 web-native 规则时,可以将下面的代码修改为 webview 使用新规则发送消息时的代码 [self.bridge callHandler:handlerName data:data responseCallback:responseCallback]; } 2.6.2 更换 web 端通信规则 当 native 端通信规则改变时,web 端则要根据是否与原来的通信方式原理相同来判断是否需要修改。 当前 web 端注册消息方式 bridge.registerHandler("testJavascriptHandler", function (data, responseCallback) { console.log(data); responseCallback(data); } ); 当前 web 端发送消息方式 bridge.callHandler("callAppEvent", { }, function responseCallback(responseData) { console.log(responseData); } ); 当前 web-native 的通信是通过 bridge 这种方式来发送和接收消息的,如果需要调整可用集成项目 web 端接收、发送消息的方式来进行替换。 2.7 iOS 系统版本使用系统小窗功能说明 iOS 因为系统限制想实现系统小窗只能通过画中画的功能,同时这个功能会有版本限制,在 iOS14+开始支持 iPhone 的画中画功能。同时直播如果使用系统播放器 AVPlayer 会有 14s+的高延迟,IJKPlayer 可以实现低延迟,但是 iOS15 以上画中画才支持 SampleBufferLayer ,因此如果直播低延迟的话需要 iOS15+。 回放视频系统小窗支持 iOS14+ 直播视频系统小窗支持 iOS15+ 三、鸿蒙 next 3.1 简介 PLVWebSDK 项目从属于易方信息科技股份有限公司,对保利威云直播、云点播系列产品的直播、回放观看做了良好的适配,极大优化了用户的观看体验,并支持浮窗播放等扩展功能,也可作为其他网页的展示容器。 本项目包含功能如下: 支持基础 Web 功能 支持应用内浮窗播放 支持系统级浮窗播放 支持悬浮窗手势拖动 支持视频全屏播放 3.2 下载安装 ohpm install plvwebsdk OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包 3.3 需要权限 ohos.permission.INTERNET ohos.permission.GET_NETWORK_INFO 3.5 功能说明 3.5.1 PLVWebViewConfig 1.设置 UA 当前可以通过下面的方式来设置需要的 UA PLVWebViewConfig().setUa("Android" + PLVUAConfig.defaultUA) 注意:如果需要到 Saas 页面的小窗功能的情况,必须在 UA 中带上 Android 和 PLVUAConfig.defaultUA 字段 2.设置 url 可以通过下面的方式来设置需要加载的 url PLVWebViewConfig().setUrl("需要加载的 url") 3.设置是否允许小窗悬浮 可以通过下面的方式来设置是否允许开启小窗功能,默认是开启的,如不需要可以设置为 false PLVWebViewConfig().setAllowFloatingWindow(true) 3.5.2 自定义注册事件 当前 SDK 内部已经注册好与前端页面通信的事件,当接入 sdk 后就能直接使用这些事件。 SDK 也支持注册自定义事件,可以通过下面的方式来进行注册 this.controller.registerHandler("自定义事件", (data: string) => {// 监听自定义事件的处理 }) this.controller.callHandle("发送原生事件", "xxx", () => {//发送原生事件 }) 如果需要监听/拦截 SDK 内部已经实现了的事件,可以通过下面的方式继续监听/拦截,这里以 onShare 事件为例子,如果需要监听/拦截其他事件可以仿照这里来完成 this.controller.registerCustomerContainEvent({ onShare: () => {// 监听到 onShare 事件时的操作 return true // return true 表示拦截掉分享事件 false 就继续由 sdk 往下执行 } }) 四、自定义事件 // 小窗播放事件 webviewBridage?.sendData('clickProduct', webviewData); // 没有小窗播放的情况: 监听自定义事件 webviewBridage?.sendData('clickProductCustom', webviewData); // 数据格式 const webviewData = { width: plvWebviewDataSize.width, height: plvWebviewDataSize.height, newPage: true, link: “跳转的自定义 url”, data: { type : out | inner | stock link : “跳转的自定义 url” ( 同上 link ) market : ‘5053’, code : 789465, name : 名称 }, } clickProduct 事件 和 clickProductCustom 自定义 webviewData ---> data 下面根据 type 和 其他参数完成 app 内链接跳转功能 对方案有任何疑问,可+V:wjc24680525 ,备注“小窗”
  18. 目前钱在微众里,最近收益越来越低了,直接有好几天都是 0 收益,请问各位大佬都在哪里存钱,不存股市基金保险。
  19. 二线城市医院信息科值得去吗?目前在互联网一线大厂,年包 50+ 医院信息科月薪差不多 1.2w 左右,没有编制.但是院领导比较重视信息化建设,不会是进去修电脑的,估计是带外包开发.领导画大饼是说干得好会有编制,升到主任也会有 3w1 月,平时开发项目也有奖金,医院在我对象老家,骑车 就 7.8 分钟,她那边亲戚比较多. 目前 28 岁了,攒了一定积蓄,全款买个车房没问题.内心有点卷累了,想躺平,但就怕这一趟,再也起不来了,而且没有编制,不一定说是很稳 算了下,差不多降薪到只有 1/3 ,属实肉疼,但是工作强度很低,中午休息 2 个半小时,下午 5 点半就走了,个人时间能多很多, 另外看了下现在医院招聘都要求 30 岁以下了,我害怕等过两年应届生更多,想躺平都没机会
  20. 大 A 玩了三个月了,来来回回挣了 200 块,草!
  21. 各位大佬,深圳有 Node.js 后端开发工作可以介绍吗
  22. 有什么路子吗 需要能虚拟微信 小红书什么的
  23. 大家好,最近折腾了个文生图的网站,用了新模型 Flux.1 ,体验下来感觉对手部细节和文字处理的效果都不错,质量不输 midjourney 。 目前站点提供每日免费试用 10 次,无需注册,国内不挂梯子可直接试用。生成的图片支持无水印下载,主页也提供了一些 prompt 可以参考。 有兴趣的朋友可以试试,看看效果怎么样,欢迎交流反馈~ 免费在线体验地址: https://fluxai.art/
  24. 使用的是阿里云的 223.5.5.5 的 DNS 服务器,ping 国内的大部分网站包括 zhihu.com, douban.com 都能 ping 通,只有 ping baidu.com 提示超时,baidu.com 解析出来的 IP 地址为 39.156.66.10 ,可能是什么原因?
×
×
  • 创建新的...