iOS APP 跳转到京东详情页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS APP 跳转到京东详情页面相关的知识,希望对你有一定的参考价值。

参考技术A 1、添加京东APP的,Schemes,允许跳转到京东

2、

```

aasa

```

NSString *skuId =self.smartDevItems[indexPath.row][@"skuId"];

    NSString *url = [[NSString stringWithFormat:@"openApp.jdMobile://virtual?params=\"category\":\"jump\",\"des\":\"productDetail\",\"skuId\":\"%@\",\"sourceType\":\"JSHOP_SOURCE_TYPE\",\"sourceValue\":\"JSHOP_SOURCE_VALUE\"",skuId] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSURL * requestURL = [NSURL URLWithString:url];

    if([[UIApplication sharedApplication] canOpenURL:requestURL])

        [[UIApplication sharedApplication] openURL:requestURL];

    else

         requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://item.m.jd.com/product/%@.html",skuId]];

        [[UIApplication sharedApplication] openURL:requestURL];

   

Flutter Scheme 使用(微信分享链接在浏览器打开App跳转到具体的页面:比如详情,活动页)

场景:在Flutte开发的app的商品详情中把商品分享给微信好友,用户点击连接浏览器打开跳到app的中的这个商品详情

思路:

1.微信分享出去的连接后面带参数 例如:https://xxx.com/xxx?goodsId=1&code=A101

2.用户点击连接浏览器打开,路径直接跳到移动端某一个页面,然后在页面初始化的时候获取到链接上的参数,拿到链接上的参数拼接到Flutter App那边定的协议 例如: window.location.href = `dynamictheme://detail?id=$this.$route.query.goodsId&code=$this.$route.query.code`;

3.Flutter App里安卓和ios都配置下协议,把协议给到前端,按协议来跳转传参,然后在mian.dat里面获取到跳转到APP的连接,拿到连接上的参数进行路由带参跳转

首先:微信分享

1.引入 fluwx插件 

fluwx: ^3.8.1+1 #微信SDK插件

2.在mian.dart中使用

import 'package:fluwx/fluwx.dart' as fluwx;


 await fluwx.registerWxApi(
    appId: "appId",//这个id要去微信文档那边去拿
    doOnAndroid: true,
    doOnIOS: true,
    universalLink: "https://help.wechat.com/app",
  );

3.分享:

 fluwx.shareToWeChat(
     // promote_links
     fluwx.WeChatShareWebPageModel(
     // "$InfoList['PromoteLinks']", // 分享出去的链接地址,也就是用户在微信里面点击跳转的链接
     title: '分享标题', // 标题

     description:'一起来围观吧!', // 描述,默认是👆的链接
     thumbnail: fluwx.WeChatImage.asset(
     'assets/image/Bai.png'),
     scene: fluwx.WeChatScene.SESSION));

这样就可以把连接分享到微信里去了

然后用户连接连接在右上角点击浏览器打开

URL Scheme

Android Scheme介绍

1.android中的scheme是一种页面内跳转协议;

2.通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;

3.通过scheme协议,服务器可以定制化告诉App跳转到APP内部页面。

使用uni_links库

uni_links: ^0.5.1

在mian.dart文件中使用

import 'package:uni_links/uni_links.dart';

Android 配置

我的配置:

 上代码

 <intent-filter>
          <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="dynamictheme"/>
            <data 
                  android:host="detail"
                  android:scheme="dynamictheme"/>
          </intent-filter>

iOS 配置

路径:ios/Runner/Info.plist

<!-- Scheme跳转app -->
	<array>
		<dict>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>dynamictheme</string>
			</array>
		</dict>
		<dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>weixin</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>wxid</string>
        </array>
    </dict>

	</array>

dart代码

 @override
  void initState() 
    super.initState();

    initPlatformStateForStringUniLinks();
  
  Future<void> initPlatformStateForStringUniLinks() async 
    // App未打开的状态在这个地方捕获scheme
    try 
      initialLink = await getInitialLink();
      if (initialLink != null) 
        //  跳转到指定页面
        schemeJump(initialLink);
      
     on PlatformException 
      initialLink = 'Failed to get initial link.';
     on FormatException 
      initialLink = 'Failed to parse the initial link as Uri.';
    
  
  // box.read("login") ==null

  void schemeJump(String schemeUrl) 
    final _jumpUri = Uri.parse(schemeUrl.replaceFirst(
      'dynamictheme://',
      'http://path/',
    ));
    switch (_jumpUri.path) 
      case '/detail':
        Get.to(ProductDetails(
          'id': _jumpUri.queryParameters['id'],
          'code': _jumpUri.queryParameters['code']
        ));
        break;
      default:
        break;
    
  

移动端的代码

因为我这边技术是vue和flutter,负责的项目也是两者都用到了,所以都是自己一个人写

 created()
    if (this.$route.query.goodsId) 
        window.location.href = `dynamictheme://detail?id=$this.$route.query.goodsId&code=$this.$route.query.code`;
      
  ,

总结:这只是一种方法,我尝试过另外一种深连接的方式,但是没有成功,退求其次 发现市面上很多app也是这种形式的跳转app,所以用到了这种方法。完成了后续还有优化的地方,例如在微信浏览器里打开app等等

以上是关于iOS APP 跳转到京东详情页面的主要内容,如果未能解决你的问题,请参考以下文章

Android跳转到应用商店的APP详情页面,以及 Google GMS 各个apk的包

vue列表页跳转到列表详情页再返回到列表页, 页面不刷新保持原来的状态

Flutter Scheme 使用(微信分享链接在浏览器打开App跳转到具体的页面:比如详情,活动页)

iOS App 内跳转到手机系统设置页面

iOS跳转到“通知”(指定应用)

Android应用如何跳转到应用市场详情页面