app端跳转到京东、拼多多等小程序的指定详情页

2,904 阅读1分钟

app端我用的是react-native

(o(╯□╰)o)直接上代码吧,知道地址后很简单的

import {Linking} from 'react-native';

async function openApp(appUrl, url = '') {
    const supported = await Linking.canOpenURL(appUrl);
    if (supported) {
        await Linking.openURL(appUrl);
    } else if(url) {

        // 浏览器打开
        const supportedTwo = await Linking.canOpenURL(url);
        if(supportedTwo){
            await Linking.openURL(url);
        }

    }
}

/**
 * 跳转淘宝购买
 * @param url
 * @returns {Promise<void>}
 */
export async function taobaoBuy(url = '') {
    // // 淘宝的商品链接,换成需要访问的地址
    let openUrl = url;
    // 因为 url 一般是从其它地方获取的,所以这里要将 http 和 https 删去
    // 也可以直接输入 https:// 之后的内容,则不需要此步判断,直接调用 plus.runtime.openURL
    if (url.substr(0, 5) === 'https') {
        openUrl = `taobao://${url.substr(8)}`;
    } else if (url.substr(0, 4) === 'http') {
        openUrl = `taobao://${url.substr(7)}`;
    }
    openApp(openUrl, url);
}

/**
 * 京东商品详情页
 * @param url
 * @returns {Promise<void>}
 */
export async function jdBuy(url = '') {
    // 京东的商品链接
    let openUrl = url;
    if (url.substr(0, 5) === 'https') {
        // 按照打开淘宝的方式打开京东,会出现无法跳转到对应的商品链接的问题
        // 这里需要添加上参数,这样就能够正确跳转,这个方法是在uni-app社区看到的
        let data = {category:'jump', des:'getCoupon',url: url.substr(8)};
        openUrl = `openApp.jdMobile://virtual?params=${JSON.stringify(data)}`;
    } else if (url.substr(0, 4) === 'http') {
        let data = {category:'jump', des:'getCoupon',url: url.substr(7)};
        openUrl = `openApp.jdMobile://virtual?params=${JSON.stringify(data)}`;
    }
    openApp(openUrl, url);
}

/**
 * 拼多多商品详情页
 * @param url
 * @returns {Promise<void>}
 */
export async function pddBuy(url = '') {
    // 拼多多的商品链接
    let openUrl = url;
    if (url.substr(0, 5) === 'https') {
        openUrl = `pinduoduo://com.xunmeng.pinduoduo/${url.substr(7).replace('mobile.yangkeduo.com/', '')}`;
    } else if (url.substr(0, 4) === 'http') {
        openUrl = `pinduoduo://com.xunmeng.pinduoduo/${url.substr(7).replace('mobile.yangkeduo.com/', '')}`;
    }
    openApp(openUrl, url);
}