菜鸟教程小白 发表于 2022-12-12 14:12:58

ios - Firebase 动态链接无法直接打开应用


                                            <p><p>根据 Firebase 文档,我在 Firebase 控制台中创建动态链接,然后在我的应用中包含动态链接 SDK。</p>

<p>一切都很好,但是当我从 facebook 或 messenger 单击共享链接(这是我的动态链接)时,它会弹出一个带有打开应用程序按钮的页面,并询问我是否要打开我的应用程序。
<a href="/image/yCHGV.jpg" rel="noreferrer noopener nofollow"><img src="/image/yCHGV.jpg" alt="enter image description here"/></a>
我没有制作这个页面。我想删除这个。
<a href="/image/ywc2j.jpg" rel="noreferrer noopener nofollow"><img src="/image/ywc2j.jpg" alt="enter image description here"/></a> </p>

<p>但我点击备忘录中的链接,它会打开我的应用程序并直接转到正确的页面。我希望以同样的方式处理共享链接。 </p>

<p>这是我的代码,我使用 Xcode 和 Objective-c 开发 iOS 应用程序。谢谢!</p>

<h1>Appdelegate.m</h1>

<pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{   
    .deepLinkURLScheme = @&#34;com.levooya.LeVooya&#34;;
    ;
    return YES;
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler{
    NSURL *url = userActivity.webpageURL;
    NSLog(@&#34;continueUserActivity url.absoluteString:%@&#34;,url.absoluteString);

    BOOL handled = [ handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink *dynamicLink, NSError *error){
      if(dynamicLink.url){
            NSLog(@&#34;okokokokokok&#34;);
            NSLog(@&#34;dynamicLink.url:%@&#34;,dynamicLink.url);

            NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:dynamicLink.url
                                                      resolvingAgainstBaseURL:NO];

            for(NSURLQueryItem *item in urlComponents.queryItems){
                if(){
                  NSLog(@&#34;item.value:%@&#34;,item.value);
                  NSString *productID = item.value;

                  NSDictionary *urlSchemeDict = [ init];

                  urlSchemeDict = ;
                  [ postNotificationName:@&#34;URLSchemeShowProduct&#34; object:nil userInfo:urlSchemeDict];

                  leData = ;
                  leData.urlSchemeDict = nil;
                  leData.urlSchemeDict = urlSchemeDict;
                }
            }
      }
    }];
    return YES;
}
</code></pre>

<h1>ProductView.m</h1>

<p>(这是在我的应用中展示产品的页面,这里是我点击分享按钮生成动态链接的功能。)</p>

<pre><code>- (void)share{
    NSString *originalLink = ;
    NSURL *link = ;
    FIRDynamicLinkComponents *components =
    [FIRDynamicLinkComponents componentsWithLink:link
                                          domain:@&#34;pbu3y.app.goo.gl&#34;];

    FIRDynamicLinkSocialMetaTagParameters *socialParams = ;
    socialParams.title = product.brand;
    socialParams.descriptionText = product.product;
    components.socialMetaTagParameters = socialParams;

    FIRDynamicLinkNavigationInfoParameters *navigationInfoParameters = ;
    navigationInfoParameters.forcedRedirectEnabled = 0;
    components.navigationInfoParameters = navigationInfoParameters;

    [components shortenWithCompletion:^(NSURL *_Nullable shortURL,
                                        NSArray *_Nullable warnings,
                                        NSError *_Nullable error) {
      // Handle shortURL or error.
      if (error) {
            NSLog(@&#34;Error generating short link: %@&#34;, error.description);
            return;
      }
      shortenURL = shortURL;

      NSString *noteStr = ;
      UIActivityViewController *activityVC = [ initWithActivityItems:@ applicationActivities:nil];
      ;
    }];
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你说的页面是App预览页面,见<a href="https://firebase.google.com/docs/dynamic-links/link-previews" rel="noreferrer noopener nofollow">https://firebase.google.com/docs/dynamic-links/link-previews</a> .</p>

<p>您可以通过指定动态链接参数<code>efr=1</code> 来禁用此页面。在控制台中创建链接以禁用此页面时,还有一个复选框。在您的代码中使用 <code>navigationInfoParameters.forcedRedirectEnabled = YES;</code>.</p>

<p>注意事项:如果您在 iPhone 上已安装您的应用时看到应用预览页面,这意味着通用链接无法使用。将动态链接粘贴到浏览器地址栏时可能会发生这种情况。或点击发生在非合作应用程序内的链接(某些应用程序不允许使用通用链接)。确保您在禁用应用预览的情况下测试了链接行为并对此感到满意。</p>

<p>编辑:
刚刚意识到您的深层链接不正确。
而不是 </p>

<pre><code>NSString *originalLink = ;
</code></pre>

<p>你应该使用你的深层链接,像这样:</p>

<pre><code>NSString *originalLink = ;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Firebase 动态链接无法直接打开应用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47687111/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47687111/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Firebase 动态链接无法直接打开应用