Android 上玩转 DeepLink:如何最大程度的向 App 引流,【微信小程序

这篇具有很好参考价值的文章主要介绍了Android 上玩转 DeepLink:如何最大程度的向 App 引流,【微信小程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

android:name=“.RouterActivty”
android:theme=“@android:style/Theme.Translucent.NTitleBar”>















App Links 与 Universal Links,来自官方的方式

我们假设一个用例:用户在印象笔记里写了一篇笔记,笔记里有一个链接: http://news.zhoulujue.com/article/123456/。 那么问题来了:用户点击以后,将会发生什么?

答案是:很大的可能是系统弹出一个对话框,列出若干个 App,问你想用哪一个打开。

这样体验其实不够好,因为用户路径变长了,转化率 将下降。所以我们应该尽可能去掉这个 对话框,其实上述章节说到了一个方法:将 http://news.zhoulujue.com/article/123456/ 改为 zljnews://zljnews/article/123456/,原理是我们选取了看起来"唯一性"的 scheme, 但是如果用户没有安装你的 App,这个体验就相当糟糕了,用户在点击以后将没有任何反应。

此时就需要 AppLinks 和 UniversalLinks 了,一言以蔽之,就是域名持有者向系统证明自己 拥有 news.zhoulujue.com 这个域名并且 App 属于自己,这样系统就会直接将 App 唤起 并把 intent 传递给 App。

如何配置 AppLinks 就不在赘述了,参考官方的教程。

App Links 实现的另一种方式

Facebook 在2014年的F8开发者大会上公布了 AppLinks 协议,在Android 的 AppLinks之前(Google I/O 15), 也是一种可行的“链接跳转 App”的方式。 这里也不在赘述细节,可以参考 Facebook 官方的介绍来实现,也特别简单:

Facebook AppLinks

非自己的代码怎么办

上面说了很多在网页中唤醒 App 的方式,但是这些都是建立在我们可以改页面 JS 等代码的前提下, 如果页面由第三方提供,举个例子,由广告主提供,表现方式是广告主提供一个落地页放在你的 App 里, 推动第三方去按照你的要求去改动他们的代码,可能比较困难,但是如果只是修改一下跳转链接就可以达到 唤起 App 的效果,这样性价比就比较高了。这个时候就需要 chrome 推荐的 intent scheme 了:

Intent scheme

如代码所示,scheme填写的是我们上面假设的 scheme:zljnews,保持一致。 package 填写 App 包名:com.zhoulujue.news,参考Chrome官方 Intent 编写规范

微信里怎么办

众所周知,微信是限制唤起 App 的行为的,坊间流传着各种微信唤起的 hack,但总是不知道什么时候就被封禁了,这里介绍 微信官方的 正规 搞法:微下载链接:

如上图,知乎就使用了微下载来向知乎的 App 导流,这种方式 Android iOS 都是通用的,具体实现方式参考腾讯微信官方的文档。

优化1:从网页到 App 的无缝体验

假设一个场景,用户访问 http://news.zhoulujue.com 阅读新闻时,被推荐下载了 App,此时安装完毕后打开 App后,最好 的体验当然是帮用户打开他没有看完新闻,直接跳转到刚刚在网页版阅读的文章。 最佳实践是:在用户点击下载时,把当前页面的 URL 写到 APK 文件的 ZIP 文件头里,待用户下载安装完毕后,启动时去读取这个 URL,然后结合上面说到过的 Router,路由到新闻详情页。下面跟我来一步一步实现吧。

在网页上下载APK时:将路径写如 APK 的 ZIP 文件头里

将下面的 Java 代码保存为 WriteAPK.java 并用 javac 编译好。

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.zip.ZipFile;

/**

  • Created by michael on 16/9/8.
    */
    public class WriteApk {

public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
if (args.length < 2) {
System.out.println(“Wrong parameters! Usage : WriteApk path comment\n”);
}
String path = args[0];
String comment = args[1];
writeApk(new File(path), comment);
System.out.println("Complete! File lies in " + path);
try {
ZipFile zipFile = new ZipFile(new File(path));
System.out.println("Zip file comment = " + zipFile.getComment());
} catch(IOException e) {
e.printStackTrace();
System.out.println(“Zip file comment read failed!”);
}
}

public static void writeApk(File file, String comment) {
ZipFile zipFile = null;
ByteArrayOutputStream outputStream = null;
RandomAccessFile accessFile = null;
try {
zipFile = new ZipFile(file);
String zipComment = zipFile.getComment();
if (zipComment != null) {
return;
}

byte[] byteComment = comment.getBytes();
outputStream = new ByteArrayOutputStream();

outputStream.write(byteComment);
outputStream.write(short2Stream((short) byteComment.length));

byte[] data = outputStream.toByteArray();

accessFile = new RandomAccessFile(file, “rw”);
accessFile.seek(file.length() - 2);
accessFile.write(short2Stream((short) data.length));
accessFile.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (zipFile != null) {
zipFile.close();
}
if (outputStream != null) {
outputStream.close();
}
if (accessFile != null) {
accessFile.close();
}
} catch (Exception e) {

}

}
}

/**

  • 字节数组转换成short(小端序)
    */
    private static byte[] short2Stream(short data) {
    ByteBuffer buffer = ByteBuffer.allocate(2);
    buffer.order(ByteOrder.LITTLE_ENDIAN);
    buffer.putShort(data);
    buffer.flip();
    return buffer.array();
    }
    }

然后使用下面的命令对 APK 写入 URL:

$java WriteAPK /path/to/your/APK http://news.zhoulujue.com/article/12345/

用户首次打开时:读取 URL 并打开

在 App 首次打开的时候读取 ZIP 文件头里你写入的 URL,读取代码如下:

public static String getUnfinishedURL(Context context) {
//获取缓存的 APK 文件
File file = new File(context.getPackageCodePath());
byte[] bytes;
RandomAccessFile accessFile = null;
// 从指定的位置找到 WriteAPK.java 写入的信息

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
deeplink安卓版,2024年程序员学习,android,微信小程序,小程序
deeplink安卓版,2024年程序员学习,android,微信小程序,小程序
deeplink安卓版,2024年程序员学习,android,微信小程序,小程序
deeplink安卓版,2024年程序员学习,android,微信小程序,小程序

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
deeplink安卓版,2024年程序员学习,android,微信小程序,小程序

尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。

  • 自行下载直达领取链接:【GitHub】

进阶学习视频

deeplink安卓版,2024年程序员学习,android,微信小程序,小程序

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

ics/618156601)】

进阶学习视频

[外链图片转存中…(img-w7ADaen0-1711134484301)]

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

deeplink安卓版,2024年程序员学习,android,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-860146.html

到了这里,关于Android 上玩转 DeepLink:如何最大程度的向 App 引流,【微信小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使音频类app广告变现收益最大化

    要使音频类应用程序的广告变现收益最大化,可以采取以下策略: admaoyan猫眼聚合 精准定位受众: 了解你的用户群体,包括他们的兴趣、偏好和行为,以便向他们展示相关性更高的广告。使用用户数据分析工具,如Google Analytics或Firebase Analytics,以获取深入的洞察。 多样化

    2024年02月20日
    浏览(53)
  • 如何有效的向 AI 提问 ?

    随着人工智能技术的迅猛发展,大语言模型(LLM)以微软 OpenAI 为代表,初次问世,为新一次的 AI 革命打响了第一枪。在短短的几个月内,GPT-3.5 和 GPT-4 的加持下,New Bing、Copilot、Cursor 等产品也相继问世,推动了产品开发的新思路。国内厂商也紧随其后,百度文心一言、华为

    2024年02月05日
    浏览(38)
  • 如何正确的向chatgpt提问?

    有没有发现,在使用ChatGPT的时候,他回答的一些问题并不是我们想要的甚至有的时候出现牛头不对马嘴的情况。 这时候就会感慨一句,人工智能也不怎么样嘛! 但是,有没有想过,是自己问的问题太宽泛,没有问到点上别说人工智能了,换个真人来都不一定能解答出来! 我搜

    2024年02月13日
    浏览(47)
  • 如何高效的向ChatGPT提问

           爱因斯坦在《物理学的进化》一书中指出:“提出一个问题比解决一个问题更为重要。因为解决一个问题也许是一个数学上或实验上的技巧,而提出新的问题,新的可能性,从新的方向看旧问题,则需要创造性的想象力,而且标志着科学的真正进步”。        

    2024年02月03日
    浏览(52)
  • .NET高级面试指南专题二十七【享元模式介绍,通过共享对象来最大程度地减少内存使用和提高性能】

    享元模式是一种结构型设计模式,旨在通过共享对象来最大程度地减少内存使用和提高性能。 在享元模式中,对象被分为两种部分:内部状态( intrinsic state )和外部状态( extrinsic state )。内部状态是对象共享的部分,而外部状态是对象的变化部分,它们在对象被创建后可

    2024年04月27日
    浏览(39)
  • 如何更好的向ChatGPT提问以及应用场景探索

    ChatGPT已经慢慢发展成为了一个生态,先前ChatGPT是不联网的,然而现在ChatGPT已经可以安装商店应用,可以让ChatGPT帮你安排行程订酒店等等,未来肯定接入更多应用,比如手机助手,智能音箱,电子宠物。不管接入什么应用,对于我而言ChatGPT都是一个非常厉害的AI老师,在遇到

    2024年02月01日
    浏览(42)
  • 如何在Mac上玩3A?我来教你最简单的方法

    最近苹果在新的发布会上公布了Mac的新系统:macos sonoma,同时也发布了Game Porting Toolkit这一款游戏转译软件,作为果粉当然很激动,当然该款软件还在测试中,一般用户很难去使用,所以博主教大家最简单的方法去玩到3A大作。 本篇针对的是搭载Apple Silicon芯片的Macbook 预备步

    2024年02月11日
    浏览(112)
  • 提示工程师:如何高效的向ChatGPT提问对话

            最近ChatGPT真的火出圈了,现在打开知乎、博客、抖音,B站都是这方面的信息,ChatGPT相关的信息铺天盖地的袭转而来。对于这种类似新一轮信息技术革命,作为普通人的我们,该如何做呢?这是我们该思考的。         英伟达创始人兼CEO黄仁勋:this is the iph

    2023年04月12日
    浏览(97)
  • 自学Android开发至少要学到什么程度才可以去面试

    前不久,有位网友私信找到我,说自己自学Android已经有两个月左右了,每天至少学习了五个小时,基本都是在网上找视频看跟着做笔记学的,然后就问我,说想这样学,至少需要学到什么程度才可以出去找工作啊? **对于这个问题,我想说的是你需要先了解互联网公司Andro

    2024年02月15日
    浏览(52)
  • 【Android】-- 如何对APP版本控制/更新?

    目录 一、 前提准备 1、获取服务器 2、使用工具操作云服务器  二、Json格式网页  三、创建file_paths.xml及修改AndroidManifest.xml 四、在java代码加入更新检测代码 效果如图:         可以强制更新和非强制更新,和浏览器下载安装包。         首先去获取云服务器,如:阿

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包