npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tencent-downapp

v1.1.1

Published

集成了微信、QQ、腾讯视频、QQ音乐和腾讯动漫等APP的api,用来打开和下载第三方的api

Downloads

153

Readme

腾讯系打开和下载 APP

在微信,手机 QQ,腾讯视频等各种 APP 中的网页,能检测本地是否有安装 app,若已安装则打开 app,若未安装,则按指定的地址进行下载。

请注意:当前功能只能在*.qq.com域名的网页中使用,其他域名调用当前模块是没有效果的

demo 页面地址:https://news.qq.com/FERD/tool/downapp-demo.htm ,当前链接可在微信、手 Q、腾讯新闻、新闻极速版、QQ 音乐和浏览器中打开测试!

腾讯内部员工请直接访问@tencent/gh-qqnews-downapp。这个包只会修复一些比较严重的bug,不会再新增功能。

安装

使用 tnpm:

$ tnpm install tencent-downapp --save

使用 npm:

$ npm install tencent-downapp --save

使用 bower:

$ bower install tencent-downapp

使用 yarn:

$ yarn add tencent-downapp

使用 jsDelivr 的 CDN 地址:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/index.js"></script>

使用 unpkg 的 CDN 地址:

<script src="https://unpkg.com/[email protected]/dist/index.js"></script>

使用

使用方法,以 ES2015 的方式为例:

import AppDownload from "tencent-downapp";

var downapp = new AppDownload({
    openUrl: "qqnews://article_9527?nm=RSS2018061501588400",
    packageName: "com.tencent.news",
    downloadUrl: "http://dldir1.qq.com/dlomg/inews/channel/TencentNews_3932.apk",
    wxAppId: "wx073f4a4daff0abe8",
    appleStoreId: "399363156",
    appName: "腾讯新闻--百万现金红包派发中...",
    downLogo: "http://mat1.gtimg.com/news/news/logo.png",
});

// 监听是否开始下载
downapp.on("downloadStart", function () {
    // 开始下载
    alert("开始下载");
});

// 获取APP的安装状态
downapp.checkAppIsInstalled(function (status) {
    if (status) {
        document.querySelector(".btn").innerText = "打开新闻客户端";
    }
});

document.querySelector(".btn").addEventListener("click", function () {
    downapp.run();
});

参数和方法的说明

1. 参数

除(developer, appVersion, privacyUrl, permissionUrl )参数均为必填参数。

该4个元素(developer, appVersion, privacyUrl, permissionUrl)为Android微信端传入,其他操作系统或其他终端无需传入。

appVersion的值为假(不传,或传入空字符串等),则自动从https://api.prize.qq.com/v1/newsapp/answer/other/config?actname=download_app_info接口获取腾讯新闻的 4 要素信息。

| 名称 | 说明 | 备注 | | :------------ | :--------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | | openUrl | 打开地址 | 可以是 scheme 地址或者 http 地址,http 地址时直接进行跳转 | | packageName | APP 的包名 | - | | downloadUrl | Android 系统里 APP 的下载地址 | - | | appleStoreId | iOS 系统里跳转到 app store 的 ID | - | | appName | Android 微信的中间下载页展示的标题 | - | | downLogo | Android 微信的中间下载页展示的 logo | - | | title | 可选 | - | | wxAppId | 在微信公众号注册的 ID,打开时能显示要打开 APP 的名称 | - | | developer | 开发者,如“腾讯公司” | 腾讯科技(北京)有限公司 | | appVersion | 要下载 APP 的版本号 | 空 | | privacyUrl | 隐私政策的链接 | https://privacy.qq.com/document/priview/4bd0bd84be654afe8c1a545ea9b64ec8 | | permissionUrl | 权限详情的链接 | https://dldir1.qq.com/weixin/android/wechat_webview_download_appinfo_new.html?fun=permission&package=com.tencent.news |

2. 可监听的事件:

2.1 downloadStart

Android 下开始安装时触发

// 开始下载时触发
downapp.on("downloadStart", function () {
    // 开始下载
    alert("开始下载");
});

2.2 downloadSteps

在下载过程中执行,目前仅在 Android 版的手机 QQ 和腾讯视频里支持进度展示;iOS 里会自动跳转到 app store 里下载,无法监听到进度

// 下载过程中
downapp.on("downloadSteps", function (step) {
    // step为当前的进度,取值0-100
    console.log(step);
});

2.3 cancel

Android 版微信的下载中间页里,点击左上角的返回按钮取消下载

// 点击左上角返回
downapp.on("cancel", function () {
    alert("返回啦");
});

2.4 removed

Android 版微信的下载中间页里,已经开始下载,然后点击“取消下载”触发

// 取消下载
downapp.on("removed", function () {
    alert("取消下载");
});

3. 方法

3.1 checkAppIsInstalled

checkAppIsInstalled 的回调函数里,会返回一个 boolean 类型的数据,表示要检测 APP 的安装状态:true表示已安装, false表示未安装。

同时,有几个额外的情况要明确下:

  1. 不在白名单中的 APP,使用当前方法检测,会直接返回false,不论当前设备是否已安装了 APP;
  2. 浏览器中,默认返回 false!
// 获取APP的安装状态
downapp.checkAppIsInstalled(function (isInstalled) {
    if (isInstalled) {
        alert("已安装");
    } else {
        alert("未安装");
    }
});

并且支持 Promise 类型:

async function AA() {
    let isInstalled = await downapp.checkAppIsInstalled();
    console.log(isInstalled);
}

3.2 run

调用run()方法后,若本设备已安装 APP,则直接打开指定的 openUrl;若未安装,则执行下载动作。当前方法不传参时,则打开初始化配置的 openUrl;否则打开传入的链接地址。

在打开未检测到安装状态的 APP 时,思路是首先尝试去拉起 APP,然后延迟下载。当拉起失败时,则执行到下载操作。在有时候操作过程中,会偶现明明已经拉起了客户端,但比如 QQ、浏览器中依然跳转到了下载的步骤!说明定时器没有被及时地清理!

document.querySelector(".btn").addEventListener("click", function () {
    downapp.run(); // 打开
});

document.querySelector(".btn").addEventListener("click", function () {
    downapp.run("qqnews://article_9527?nm=20190307A0WEXN00"); // 打开
});

3.3 openApp

只打开或尝试打开 APP,打开失败时,没有任何后续的操作。使用方式与run()方法一样,既可以传入参数,也可以不传!

在微信中打开时,若成功打开,则返回Promise.resolve的结果;若没有要打开的 APP,则会返回Promise.reject;

document.querySelector(".btn").addEventListener("click", function () {
    downapp.openApp(); // 打开
});

document.querySelector(".btn").addEventListener("click", function () {
    downapp.openApp("qqnews://article_9527?nm=20190307A0WEXN00"); // 打开
});

3.4 download

只下载初始化时配置的 APP,该方法无参数!

// 下载
document.querySelector(".btn").addEventListener("click", function () {
    downapp.download();
});

3.5 getNetworkType

获取网络的状态,type 有 3 个返回值:

  • none: 无连接;
  • wifi: wifi 状态
  • wwan: 流量状态
// 回调函数的方式
downapp.getNetworkType(function (type) {
    alert(type);
});

// Promise的方式
downapp.getNetworkType().then((type) => {
    alert(type);
});

可能会出现的问题

在使用这个 js 文件过程中,有可能会曲线下面的几个问题:

4.1 在微信或 QQ 中,没有任何反应

答: 请确认您项目当前的域名为*.qq.com

4.2 微信中正常,QQ 中不能正常的打开或下载

答: QQ 中有一些特殊的 api 属于敏感 jsapi,需要将域名加入到他们的白名单中,才可以正常的使用

changelog

CHANGELOG