• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Reaction本机IOS Safari没办法打开页面,因为该地址在有效登录后无效

用户头像
it1352
帮助157

问题说明

成功登录后获取以下内容。登录流程在Android上运行正常,正确返回令牌、刷新等...

"Safari无法打开页面,因为地址无效"

Screen Recording of Error

Auth0回调配置

Info.plist

...
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>None</string>
        <key>CFBundleURLName</key>
        <string>auth0</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
        </array>
    </dict>
</array>
...

AppDeligate.m

...
#import <React/RCTLinkingManager.h>
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  return [RCTLinkingManager application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation];
}
...

正确答案

#1

我遇到了同样的问题(在使用Auth0时,答案取决于他们在这里提供的解决方案-https://auth0.com/docs/quickstart/native/react-native)

另外,此处的另一个答案中的一些输入-"Safari cannot open the page because the address is invalid" appearing when accessing Branch link with app uninstalled

最终归结为

  1. 从iOS 9.2开始,Apple不再正式支持深度链接的URI方案,强烈建议开发人员实现通用链接,以便在iOS上获得同等功能
  2. 若要克服此问题,您必须启用此应用程序链接才能工作。一种选择是(检查链接的堆栈答案)希望发生这种情况的服务提供商将提供通用链接。

另一个选项(下面的代码片段)是添加"URLSolutions"

#import <React/RCTLinkingManager.h>

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
  return [RCTLinkingManager application:app openURL:url options:options];
}

第二步

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>None</string>
        <key>CFBundleURLName</key>
        <string>auth0</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
        </array>
    </dict>
</array>

这就是我解决这个问题的方法(在使用Auth0库时,但无论您使用的是什么库,都应该有类似的库可用)。这基本上克服了苹果/iOS对应用程序链接的限制,这就是你得到原始Safari错误的原因。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /reply/detail/tanfbaih
系列文章
更多 icon
同类精品
更多 icon
继续加载