我们目前将应用程序上传到苹果商店,并得到以下答案:
我们建议实现Safari View Controller API以显示 应用中的网络内容。 Safari View Controller允许 显示URL并从嵌入式检查证书 应用程序中的浏览器,以便客户可以验证网页URL和SSL 证书以确认他们正在输入登录凭据 进入合法页面。
当前,我正在使用此代码从我们的应用中打开网站
Linking.openURL('here-goes-the-url')
所以我有点迷失了苹果这个答案的确切含义。我应该在我的应用程序内使用WebView来显示网站内容吗?我试过了,但是在那儿看不到苹果评论中提到的任何URL或证书。
到目前为止,我发现的是这样的: https://www.npmjs.com/package/react-native-safari-view-controller
但是此回购协议自2年以来一直未维护。
有没有人能使我更清楚审阅者对该答案的含义? 我可以使用
WebBrowser.openBrowserAsync('url')
实现他们想要的?
最诚挚的问候
答案 0 :(得分:2)
expo-web-browser 提供对系统Web浏览器的访问,并支持处理重定向。在iOS上,根据您调用的方法,它使用 SFSafariViewController 或 SFAuthenticationSession ,在Android上,它使用 ChromeCustomTabs 。从iOS 11开始, SFSafariViewController 不再与Safari共享Cookie,因此,如果您使用WebBrowser进行身份验证,则需要使用 WebBrowser.openAuthSessionAsync ,如果您只是想打开网页(例如您的应用程序隐私政策),然后使用 WebBrowser.openBrowserAsync
https://docs.expo.io/versions/latest/sdk/webbrowser/
参考中的示例代码:-
export default function App() {
const [result, setResult] = useState(null);
const _handlePressButtonAsync = async () => {
let result = await WebBrowser.openBrowserAsync('https://expo.io');
setResult(result);
};
return (
<View style={styles.container}>
<Button title="Open WebBrowser" onPress={_handlePressButtonAsync} />
<Text>{result && JSON.stringify(result)}</Text>
</View>
);
}
答案 1 :(得分:1)
现在,通过使用Linking.openURL...
,您会将用户发送到外部浏览器(在iOS上为Safari)。
审稿人希望您通过将用户吸引到您的应用程序中,同时仍为他们提供Safari的所有功能,从而提供更好的用户体验。
要执行此操作,您必须使用Safari View Controller
(在iOS上),基本上就像在应用中 内打开safari。
即使library you pointed to确实做到了这一点,它也不再维护,仅适用于iOS,因此我会使用更现代的东西也适用于Android: