Reaction本机IOS Safari无法打开页面,因为该地址在有效登录后无效
成功登录后获取以下内容。登录流程在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];
}
...
解决方案
我遇到了同样的问题(在使用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
最终归结为
- 从iOS 9.2开始,Apple不再正式支持深度链接的URI方案,强烈建议开发人员实现通用链接,以便在iOS上获得同等功能
- 若要克服此问题,您必须启用此应用程序链接才能工作。一种选择是(检查链接的堆栈答案)希望发生这种情况的服务提供商将提供通用链接。
另一个选项(下面的代码片段)是添加"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错误的原因。
相关文章