You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Dynamic Links在iOS端崩溃,Android端正常运行求助

问题:Firebase动态链接iOS构建失败,Android运行正常

代码在Android设备上可正常生成短动态链接,但iOS设备执行时抛出类型转换错误:type 'int' is not a subtype of type 'String' in type cast。

原代码

String userId = uid;
final DynamicLinkParameters dynamicLinkParameters = DynamicLinkParameters(
    uriPrefix: 'https://mywebsite.com/user/',
    link: Uri.parse(
      'https://mywebsite.com/link/?username=$userId',
    ),
  );

final ShortDynamicLink shortDynamicLink = await dynamicLink.buildShortLink(
  dynamicLinkParameters,
  shortLinkType: ShortDynamicLinkType.short,
);

报错日志

flutter: type 'int' is not a subtype of type 'String' in type cast
2022-07-29 22:30:23.235625+0300 Runner[51971:280704] flutter: 
#0 new LinkedHashMap.from.<anonymous closure> (dart:collection/linked_hash_map.dart:187:26)
#1 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:614:13)
#2 new LinkedHashMap.from (dart:collection/linked_hash_map.dart:186:11)
#3 platformExceptionToFirebaseException  (package:firebase_dynamic_links_platform_interface/src/method_channel/utils/exception.dart:32:9)
#4 convertPlatformException  (package:firebase_dynamic_links_platform_interface/src/method_channel/utils/exception.dart:17:5)
#5 MethodChannelFirebaseDynamicLinks.buildShortLink (package:firebase_dynamic_links_platform_interface/src/method_channel/method_channel_firebase_dynamic_links.dart:196:7)

解决方案

问题根源是uid实际为int类型,Android端会自动隐式转为字符串,但iOS端的Method Channel在传递参数时会严格保留类型,导致URL拼接后参数类型不匹配引发错误。

修改方式:强制将uid转为字符串类型,确保URL参数为纯字符串:

// 方式1:先将uid转为字符串再赋值
String userId = uid.toString();
final DynamicLinkParameters dynamicLinkParameters = DynamicLinkParameters(
    uriPrefix: 'https://mywebsite.com/user/',
    link: Uri.parse(
      'https://mywebsite.com/link/?username=$userId',
    ),
  );

final ShortDynamicLink shortDynamicLink = await dynamicLink.buildShortLink(
  dynamicLinkParameters,
  shortLinkType: ShortDynamicLinkType.short,
);

或者直接在URL拼接时转换:

final DynamicLinkParameters dynamicLinkParameters = DynamicLinkParameters(
    uriPrefix: 'https://mywebsite.com/user/',
    link: Uri.parse(
      'https://mywebsite.com/link/?username=${uid.toString()}',
    ),
  );

final ShortDynamicLink shortDynamicLink = await dynamicLink.buildShortLink(
  dynamicLinkParameters,
  shortLinkType: ShortDynamicLinkType.short,
);

内容的提问来源于stack exchange,提问作者Emma Alden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 14:36:21