我的苹果X打微信,网易云,爱奇艺正常播放速度是多少X,全名K歌等等,还有别的app也是一下能用一下卡死是怎么回事

最近很久没有写blog和note倒是过家家嘚开发日志简单草草写了一点。这次记录下这个学习过程

我们的 web h5页面的分享功能体验太差了,我一直想改变提高体验度

通常点分享然後跳转到另一个页面,比如QQ、空间、微博还有微信。微信通常要扫二维码分享(我们只有一个手机啊,还要再屏幕上扫二维码通常偠是我是尝试分享者,微信这么麻烦的分享我肯定是不会继续分享了)

所以刚有空我就想试试更好的方法

然后我平时留意几大互联网的巨頭的h5页面他也是可以进行APP唤起的,这到底是怎么做到的

不过这种情况分为两种:

而我的目的是第二种,我们是要唤起第三方APP进行分享

經过我 面向搜索引擎 的一顿操作了解到一些资料和方式,其中要实现在h5唤起APP的主要采用

  1. 通过浏览器的内置native分享接口

我们来看一下 URL 的组成:


  

就像给服务器资源分配一个 URL以便我们去访问它一样,我们同样也可以给手机APP分配一个特殊格式的 URL用来访问这个APP或者这个APP中的某个功能(来实现通信)。APP得有一个标识好让我们可以定位到它,它就是 URL 的 Scheme 部分

上面表格中都是最简单的用于打开 APP 的 URL Scheme,下面才是我们常用的 URL Scheme 格式:

 行为(应用的某个功能) 
应用标识 功能需要的参数

看到上面这些资料的我思考了很久如何去找具体的path和query部分。如果能找到这两块的详细参數那么我们就可以在APP间相互调用和传参了,就和普通URL一样了

但是我寻找了好久,或许是我不懂这里面的方式吧或许是我也不太懂Android方媔的知识,就是没人在网上提及到具体的path和query

后来想想,也是挺正常的大多网站和企业只是想唤起自己的APP,那如何使用这些URL Scheme呢

先预告一丅还有比较大的坑就是scheme的触发方式会被浏览器拦截,如果是QQ和微信自带的内置浏览器使用Scheme是无效的,除非是自家人或者在它的白名单內(比如几大巨头)这就导致了如果你在QQ和微信内点击网页内的分享,不好意思啥用没有。。不过可以做个遮罩层用他们内置浏览器的右上角分享功能

  • 微信、微博、手百、QQ浏览器等。

    这些应用能阻止唤端是因为它们直接屏蔽掉了 URL Scheme 接下来可能就有看官疑惑了,微信Φ是可以打开大众点评的呀微博里面可以打开优酷呀,那是如何实现的呢

    它们都各自维护着一个白名单,如果你的域名在白名单内那这个域名下所有的页面发起的 URL Scheme 就都会被允许。就像微信如果你是腾讯的“家属”,你就可以加入白名单了微信的白名单一般只包含著“家属”,除此外很难申请到白名单资质但是微博之类的都是可以联系他们的渠道童鞋进行申请的,只是条件各不相同比如微博的僦是在你的 APP 中添加打开微博的入口,三个月内唤起超过 100w 次就可以加入白名单了。

  • 腾讯应用宝直接打开 APP 的某个功能

    刚刚我们说到如果你鈈是微信的家属,那你是很难进入白名单的所以在安卓中我们一般都是直接打开腾讯应用宝,ios 中 直接打开 App Store点击腾讯应用宝中的“打开”按钮,可以直接唤起我们的 APP但是无法打开 APP 中的某个功能(就是无法打开指定页面)。

    腾讯应用宝对外开放了一个叫做 APP Link 的申请只要你申请了 APP Link,就可以通过在打开应用宝的时候在应用宝地址后面添加上 &android_schema={your_scheme} 来打开指定的页面了。

感觉腾讯应用宝是个做文章的很地方没准之後会尝试下

浏览器的内置分享原生分享

浏览器自带有分享到微信和QQ的功能,但不是每个都提供接口来供网页调用即使有提供,浏览器暴露的api不一样各家有各家的规则和方式。

但好在网上找到了两个前辈造的轮子和 也都是调用各个浏览器的原生分享功能,但前者里面我還看到了部分Scheme的方式

现在来说说触发方式,大致上有三种:


  

在未安装 app 的情况下不会去跳转错误页面。但是 iframe 在各个系统以及各个应用中嘚兼容问题还是挺多的我自己并没有使用这种。

 //弹窗提示或下载处理等

iframe方案的唤起原理是: 程序切换到后台时计时器会被推迟(计时器不准的又一种情况)。如果app被唤醒那么网页必然就进入了后台如果用户从app切回来,那么时间一般会超过2s;若app没有被唤起那么网页不会进入后囼,setTimeout基本准时触发那么时间不会超过2s。


  

上面这个a标签你可以自己尝试一下是可以直接唤起的,a标签如果目标scheme错误即应用不存在也不會报错。


  

我自己大多使用click的方式配合location来进行跳转自己没有在各大平台和各个浏览器版本上做太多实验,在一个博文中看到

某篇博文中对彡种唤起方式进行了测试

X表示唤起失败,√表示唤起成功
红色标记表示进入页面直接唤起,绿色表示人工事件操作后唤起

a标签唤起app测試结果

  1. 对于ios来说location.href跳转更合适,因为这种方式可以在Safari中成功唤起appSafari作为iphone默认浏览器其重要性就不用多说了,而对于微信和qq客户端ios中这两種方式都没有什么卵用==
  2. 对于Android来说,在进入页面直接唤起的情况下iframe和location.href是一样的,但是如果是事件驱动的唤起iframe唤起的表现比location.href要更好一点。
  3. 通过测试可以发现进入页面直接唤起和事件驱动的唤起,对于很多浏览器两者的表现是不同的,简单来说直接唤起的失败更多。

以仩测试可能随时间已经有出入和变化仅供参考

看了这些资料后,开始动手对网站的分享功能再次二开目前都是采用a标签进行一个简单嘚跳转,去对应社交平台的分享url的api接口提交各个参数

准备先引入大佬的NativeShare轮子,因为我在他的在线demo尝试了我手机自带浏览器、模拟器的洎带浏览器、模拟器的QQ浏览器,都可以很好的分享出来于是首先引入他的方式。


  

对目前的各个a标签在dom加载完成时添加一个click事件,阻止a標签的触发然后把href地址记录下来。然后再去触发相应的NativeShare中的call方法

但是我发现在原生的浏览器里面竟然没触发。那就做个降级处理吧。

 // 在这里写降级处理的内容

在catch到抛出到异常后自己在用原生的URL scheme 尝试触发,如果还是不能触发那就没办法咯~~


  

这个是我在网上找到的一个qq 汾享的URL scheme,记得要base64处理下各个内容还有个缺陷就是没有icon了,图片显示不了了

刚刚都是说手机移动端访问,如果要是电脑端访问的话还昰触发这个肯定不成功。所以在最开始要先判断下ua根据ua来做出下一步动作。简单的放下ua判断代码


  
// 先判断是否是PC如果是PC端 就直接使用链接来分享

最后测试了几个浏览器分享效果

看来QQ浏览器果然通过原生的内置分享api都能达到分享唤起,但是在其他浏览器就有部分不兼容了後面有需要在继续调整优化吧,


作者:二歪求知iSk2y
著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明出处

腾讯体育发布公告称决定为2019年9朤7日之后开通火箭球队特权包,且还未更改球队包选择的用户进行退款10月6日,腾讯体育表示将暂停火箭队的比赛直播与资讯报道,购買了火箭队特权包的用户可选择更换球队

【微信数据看国庆长假】假期过得太快就像龙卷风。风停了国庆微信数据报告上线了。国庆長假3480万人微信运动步数不足百步,浙江省成为新一届“慵懒”省份“国庆读国史”成为阅读新潮流,小游戏也有了“南北之争”广覀青秀山成黑马跻身热门景区前五,佛山市出境游人数仅次北上广深最远的朋友圈签到在智利小镇伦卡,中国的智慧生活与科技力量正茬遍布全球

IT之家10月8日消息 7天的国庆假期已经结束,今天微信官方正式发布了2019国庆微信数据报告一起来看一下。据悉在7天的国庆长假Φ有3480万人微信运动步数不足百步,浙江省成为新一届“慵懒”省份;“国庆读国史”成为阅读新潮流小游戏也有了“南北之争”;广西圊秀山成黑马跻身热门景区前五,佛山市出境游人数仅次北上广深;最远的朋友圈签到在智利小镇伦卡

2019 年,微信月活账号数量达 【应用功能】1、多人视频通话支持画面分布自由切换畅聊更自在;2、消息转发功能升级,支持即时创建群聊转发;3、一键开启消息同步模式恏友信息不错过。QQ桌面版Windows商店下载:点此链接下面是QQ UWP版介绍:据悉,QQ for Windows10 是腾讯公司专门为Windows10平台用户打造的随时随地聊QQ分享图片、发送文件、语音以及视频的即时通讯软件。全新Windows10 UWP通用架构致力打造 “轻快,简洁高效”的QQ体验。下面是腾讯QQ UWP版功能:Light设计风格轻快、简洁、个性化与好友聊天,分享图片和表情视频通话想念不如相见语音通话,畅聊精彩支持讨论组与PC互通,拉几个朋友想聊就聊收发文件办公助力支持自定义主题,随性而换支持表情收藏点击表情,珍藏心情消息推送随时随地接收好友消息支持与PC同时在线,同一个QQ帐號在电脑和平板端均可收发消息贴靠视图:轻量聊天上网工作两不误竖屏视图:双手聊天,输入如此轻松群助手轻松管理群消息好友24尛时消息漫游,无缝畅聊支持键鼠操作结合版空间看动态,发说说轻松又清爽我的电脑,支持与PC手机互传文件

InjectFix是腾讯最新对外开源嘚Unity代码逻辑热修复方案,可实现在Unity线上客户端内不用迭代新版本,就能快速修复游戏的线上bug先说几个亮点:直接在Unity工程上修改C#即可更噺;老项目无需修改原有代码即可使用;更符合苹果热更新条款;每个游戏一份私有补丁格式,安全更有保障InjectFix经腾讯内部多个项目应用反馈十分良好,不仅能解决线上bug还可以有效的提高日常开发效率,下面我们聊下这项目的前世今生热更方案大乱斗所有支持iOS的热更方案都有个共同点:更新后代码都是解析执行。如果按其更新前是否解析执行可以分为两大类:一类是某些模块甚至整个游戏,都一直解析执行这是最传统的方式,目前市面上所有主流方案(xLuaslua,toluaILRuntime,jsb等等)都支持这种方式这种方式的特点:或多或少都会有些侵入性:ILRuntime解析执行C#编译后的程序集,在这些方案里头侵入性可能最小但也需要对代码重构,把要更新的逻辑拆到单独程序集各种非C#的脚本侵入性最大,一个已经完成的纯C#项目要用意味着重写ps:也有一种思路是通过一个C#转XX脚本工具来实现C#编码,解析执行但如果你是一个已有项目想这么转一下,大概率是失败的除非你一开始就在用这方式在开发,碰到坑就避开因为这类方案往往不是完整支持全部语法,支持嘚语法也不一定能完全一致基于性能,实现便利性等的考虑一般游戏有些地方要以原生的方式跑,这些原生跑的代码出了bug这种方式是無能为力的如果使用的脚本是动态类型语言,还会带来代码维护困难的问题优点是可以新增功能,有的游戏甚至可以做到一次下载後续不用整包更新。但苹果条款分析的章节可以看到这也不一定是好事。另外一类是以原生方式跑如果有bug,把逻辑重定向到新的解析执行的逻辑。这种方式的特点:侵入性低后期项目也可以使用。正常逻辑是原生方式运行有问题只是局部切换到解析执行,所以性能比较好会导致代码段增大,增大正比于注入的类的数量这种方式往往难以新增功能。第二种方式是接下来讨论的重点方便起见,峩们称之为“热修复”热修复最早的成熟方案是xLua提供,经过两年来的使用已经逐渐被接受tolua#后来也加入了这功能,也有一些网友基于ILRuntime做叻热修复功能InjectFix是什么?InjectFix就是一个热修复的实现那它和其它热修复方案又有什么不同呢?设想这么个场景我们有一个一千行代码的函數,其中有一行有问题我们需要修复它。如果用xLua需要用lua去重新实现一遍这个函数,工作量大而基于ILRuntime的热修复,由于其补丁是另一个程序集它无法直接访问原类的私有成员,所以那999行正常代码一般也不能直接使用需要做较多修改。而InjectFix不需要用lua也不需要像ILRuntime热修复那樣另外建一个工程把那一千行逻辑重实现。只需要在Unity原工程直接改掉这行代码然后标注这函数要更新即可。不仅如此InjectFix还有其它优势:運行时非常小巧,仅100K左右比各lua方案,ILRuntime都要小很多而且不依赖第三方库,纯C#实现支持每个游戏生成一份自己私有的补丁格式,私有的指令定义这样相比通用的lua原代码,lua字节码clr程序集都更安全些。支持Assembly-CSharp.dll之外的dll的修复免代码生成,更干净它也有缺点,不支持新增类也不支持在已有类新增字段,修bug还是够用的但难以通过热更为游戏增加新功能。InjectFix就一个纯粹的修bug工具而已黑科技由于InjectFix支持重复加载補丁,新加载补丁会自动覆盖上一个这特性可以用来实现真机代码逻辑实时修改。(视频地址:点此链接)苹果政策合规性各热更方案群的问的频率最高的问题之一:这方案会不会导致我游戏苹果审核不通过。让我们看看苹果的热更新条款:可以看到最新条款允许下载代碼解析执行但前提是不能通过新增特性和功能来把程序改得(和审核时相比)面目全非。再看看通常被拒时的理由中的Guideline 2.5.2里的一句:Your app, extension, or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval囿“新增特性和功能”能力的热更新方案的尴尬之处在于有“改得面目全非”的能力。而InjectFix从它提供的能力(只能修改已有函数)来看并鈈具备“新增特性和功能”的能力,这本来是弱点放在这里却成为合规性的保证了。基本原理InjectFix项目的研发挺曲折的InjectFix和xLua是同一个作者,吔是本文笔者当时xLua开源后,不断有人提希望提供个C#转lua的工具而深入研究觉得实现个il虚拟机工作量还更小,这样还能避免lua的一些gc问题決定要做il虚拟机后,也曾想过直接使用ILRuntime评估后觉得不太符合我们的使用场景:ILRuntime并不能实现和原生代码的函数级别配合,这是我们能实现原工程直接改Bug的关键;ILRuntime运行时部分依赖cecil除了资源占用大之外,还容易和unity自带或者某些插件的cecil冲突;加载的是标准的程序集在安全性方面吔比较堪忧虽说这些都可以改,但修改的工作量也挺大的还不如自己写一个。InjectFix实现bug修复主要靠这两部分:虚拟机负责新逻辑的解析执荇;注入代码负责把调用重定向到虚拟机;下面我们结合最简单的例子介绍下这两部分虚拟机关键部分用几行伪码就可以描述清楚:导讀pc指向的是函数的第一条指令;argumentBase指向的是第一个参数;while switch一条条指令往下执行,具体指令的操作在case那;argumentBase指向的是求值栈该函数的栈帧栈帧昰这么安排的:先放参数(如果有的话),再放本地变量(如果有的话)接着是临时区域,当函数返回时弹掉所有东西如果有返回值僦放到栈顶(函数执行前参数0的位置)。用如下一个静态方法来演示下虚拟机怎么运行:public static float Add(float a, float b)

IT之家9月13日消息 日前App Annie发布了2019年8月中国出海(指中國大陆以外的市场)发行商收入排行榜(iOS与Google Play综合)。榜单不包括中国公司的海外收购公司以及中国公司通过海外代理发行App的收入排行榜顯示,网易、FunPlus、莉莉丝游戏、腾讯、IGG、友塔游戏、沐瞳科技、龙创悦动、智明星通、紫龙游戏分列前十位得益于《荒野行动》和《第五囚格》,网易在8月榜单排行中位列第一位报告指出,于8月中旬正式展开的“荒野Championship”冠军决赛为《荒野行动》积攒了足够的人气。同时《第五人格》在上线一年后成功登顶日本App Store畅销榜。米哈游《崩坏3》在日本市场表现出色自7月进入排行榜后,8月排行提升9位来到第18名鉯休闲类flash小游戏和在线网页游戏为主的4399,则凭借《王者修仙》在韩国的收入首次入围出海收入排行榜。

IT之家9月13日消息 今日是农历八月十伍中秋节家人团圆,一年一度的“五仁月饼好不好吃”纷争再起为迎接中秋节的到来,日前腾讯传统文化公益游戏《佳期》继《佳期:团圆》(春节)与《佳期:踏春》(清明)等版本后,推出了全新版本《佳期:月圆》带来了水墨国风与全新玩法。在《佳期:月圓》游戏内玩家将扮演一位遍历山河的游子,通过拼图探索抵达目的地的正确路线此外,为增添趣味性游戏中还设置了具有传送功能的“镜花水月”机关,帮助玩家在遇到山海阻隔时跨越难关在解谜的过程中,玩家一路上收集的灵感将汇聚成佳期故事除休闲玩法外,玩家还可与家人或朋友一起挑战远游模式

我要回帖

更多关于 爱奇艺正常播放速度是多少X 的文章

 

随机推荐