2

I stuck in this problem for a long time, but I haven't found any information or solution about this situation...

In Android App, it works very good which can even catch the queryParameters. But In Ios App, everytime I click my dynamic link, it will crash and get the error message below.

I will be very appreciated if anyone can help me to figure out this problem, thank you!!

My Dynamic Link

https://choudao.page.link/?efr=0&ibi=com.example.XXX&apn=com.choudao.XXX&imv=1&amv=1&link=https%3A%2F%2Fchoudao.page.link.com%2F%3Faction%3Dclose

Error Message

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'

My Flutter Code

void createDynamicLink(String action) async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://choudao.page.link',
      link: Uri.parse('https://choudao.page.link.com/?action=$action'),
      // link: Uri.parse('https://choudao.page.link.com'),
      androidParameters: AndroidParameters(
        packageName: 'com.choudao.XXX',
        minimumVersion: 1,
      ),
      iosParameters: IOSParameters(
        bundleId: 'com.example.XXX',
        minimumVersion: '1',
        appStoreId: '962194608',
      ),
    );

    final Uri dynamicUrl = await dynamicLinks.buildLink(parameters);
    final ShortDynamicLink shortDynamicLink = await dynamicLinks.buildShortLink(parameters);
    final Uri shortUrl = shortDynamicLink.shortUrl;
    print('Url:' + dynamicUrl.toString());
    print('$action+_shortUrl:' + shortUrl.toString());
  }

  Future<void> retrieveDynamicLink() async {
    try {
      dynamicLinks.onLink.listen((dynamicLink) {
        final Uri deepLink = dynamicLink.link;
        print('deepLink:' + deepLink.toString());
        if (deepLink != null &&
            deepLink.queryParameters.containsKey('action')) {
          if (deepLink.queryParameters['action'] == 'open') {
            Future.delayed(Duration(seconds: 2)).then((value) {
              _doorAction.sendOpenData(
                  context,
                  widget.userLoginFamilyCode,
                  widget.userHouseNumber,
                  userName,
                  scaffoldMessengerHomePageDoorKey);
              print('onLink_Open');
            });
          } else {
            Future.delayed(Duration(seconds: 2)).then((value) {
              _doorAction.sendCloseData(
                  context,
                  widget.userLoginFamilyCode,
                  widget.userHouseNumber,
                  userName,
                  scaffoldMessengerHomePageDoorKey);
              print('onLink_Close');
            });
          }
        }
      }).onError((error){print('onLinkError:'+error.toString());});

      final PendingDynamicLinkData data =
          await dynamicLinks.getInitialLink();
      final Uri deepLink = data?.link;
      print('DataLink:' + deepLink.toString());
      if (deepLink != null && deepLink.queryParameters.containsKey('action')) {
        if (deepLink.queryParameters['action'] == 'open') {
          Future.delayed(Duration(seconds: 2)).then((value) {
            _doorAction.sendOpenData(
                context,
                widget.userLoginFamilyCode,
                widget.userHouseNumber,
                userName,
                scaffoldMessengerHomePageDoorKey);
            print('Init_Open');
          });
        } else {
          Future.delayed(Duration(seconds: 2)).then((value) {
            _doorAction.sendCloseData(
                context,
                widget.userLoginFamilyCode,
                widget.userHouseNumber,
                userName,
                scaffoldMessengerHomePageDoorKey);
            print('Init_Close');
          });
        }
      }
    } catch (e) {
      print(e.toString());
    }
  }
TonyChou
  • 41
  • 1

0 Answers0