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
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());
}
}