public async Task <CreateShortDynamicLinkResponse> CreateFirebaseDynamicLinkByIdAsync(
            string id)
        {
            var linkAppOpen = GenerateLinkAppOpens(id);

            var requestModel = new CreateShortDynamicLinkRequest
            {
                DynamicLinkInfo = new DynamicLinkInfo
                {
                    AndroidInfo = new AndroidInfo(),
                    IosInfo     = new IosInfo(),
                    // Parameters used for tracking.
                    AnalyticsInfo = new AnalyticsInfo(),
                    DesktopInfo   = new DesktopInfo(),
                    // E.g. https://maps.app.goo.gl, https://maps.page.link
                    // Will fallback to DynamicLinkDomain
                    DomainUriPrefix = "soge.page.link",
                    // <-- Can used only one of DomainUriPrefix / DynamicLinkDomain -->
                    // Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl
                    //  Required if missing DomainUriPrefix
                    // DynamicLinkDomain = "soge.domain.link",

                    // The link your app will open
                    // You can specify any URL your app can handle./
                    // must be a well-formatted URL
                    Link = linkAppOpen,
                    // Information of navigation behavior of a Firebase Dynamic Links.
                    NavigationInfo = new NavigationInfo(),
                    // Used to set meta tag data for link previews on social sites
                    SocialMetaTagInfo = new SocialMetaTagInfo()
                },
                Suffix = new Suffix
                {
                    Option = "SHORT",
                }
            };

            var request = _fireBaseDynamicLinksService.ShortLinks.Create(requestModel);

            try
            {
                var shortDynamicLinkResponse = await request.ExecuteAsync();

                var shortLink = shortDynamicLinkResponse.ShortLink;

                return(shortDynamicLinkResponse);
            }
            catch (Exception e)
            {
                Debug.Fail(e.Message);
                return(default(CreateShortDynamicLinkResponse));
            }
        }
        /// <summary>
        /// Creates a short Dynamic Link given either a valid long Dynamic Link ordetails such as Dynamic Link domain, Android and iOS app information.The created short Dynamic Link will not expire.Repeated calls with the same long Dynamic Link or Dynamic Link informationwill produce the same short Dynamic Link.The Dynamic Link domain in the request must be owned by requester'sFirebase project.
        /// Documentation https://developers.google.com/firebasedynamiclinks/v1/reference/shortLinks/create
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated Firebasedynamiclinks service.</param>
        /// <param name="body">A valid Firebasedynamiclinks v1 body.</param>
        /// <returns>CreateShortDynamicLinkResponseResponse</returns>
        public static CreateShortDynamicLinkResponse Create(FirebasedynamiclinksService service, CreateShortDynamicLinkRequest body)
        {
            try
            {
                // Initial validation.
                if (service == null)
                {
                    throw new ArgumentNullException("service");
                }
                if (body == null)
                {
                    throw new ArgumentNullException("body");
                }

                // Make the request.
                return(service.ShortLinks.Create(body).Execute());
            }
            catch (Exception ex)
            {
                throw new Exception("Request ShortLinks.Create failed.", ex);
            }
        }