(Flutter)当应用程序被杀死时,深度链接在iOS上不起作用

hwamh0ep  于 2023-10-21  发布在  iOS
关注(0)|答案(2)|浏览(156)

我在iOS上的深层链接无法正常工作(I followed the official Flutter guide on how to implement deep links)。在Android上,一切都运行得很好,但在iOS上(当应用程序被杀死时),应用程序只是从链接启动,但停留在主页上(不导航到正确的路线)。
我使用auto_route来路由。
这是我的routerDelegateMaterialApp.router

routerDelegate: _appRouter.delegate(
            deepLinkBuilder: (deepLink) {
              if (RegExp(r'\/oferta\/[^\/]+\/[^\/]+.*$')
                  .hasMatch(deepLink.path)) {
                return deepLink;
              } else {
                return DeepLink.defaultPath;
              }
            },
          ),
koaltpgm

koaltpgm1#

1.如果它是在android设备工作,你需要检查权限在'info.plist'文件.
1.深度链接通常不适用于虚拟设备(模拟器),因此请尝试使用真实的设备。

zzlelutf

zzlelutf2#

首先,在iOS上处理深层链接时,必须确保在Xcode项目中设置了必要的配置。以下是一些步骤:

**Info.plist中的URL类型:**确保您的应用的Info.plist文件正确配置了URL类型。您需要为应用指定URL方案,该方案应与您在深层链接中使用的方案相匹配。

  • 打开Info.plist文件。
  • 添加一个新的“URL类型”键(如果它不存在)。
  • 在“URL类型”下添加一个项目并设置您的URL方案。
    **关联域名:**如果您的深层链接涉及域名(如https://example.com/deeplink),则需要在Xcode中设置关联域名。这一步对于通用链接很重要,通用链接是处理深度链接的更可靠的方法。
    示例:
import 'package:flutter/material.dart';
import 'package:uni_links/uni_links.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    initUniLinks();
  }

  void initUniLinks() async {
    try {
      final initialLink = await getInitialLink();
      handleDeepLink(initialLink);
    } on Exception {
      // Handle any exceptions
    }

    linkStream.listen((String? link) {
      if (link != null) {
        handleDeepLink(link);
      }
    });
  }

  void handleDeepLink(String link) {
    // Handle your deep link here
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // Your app's content
    );
  }
}

相关问题