3

Appleのドキュメントによると:

... Cookie はすべてのアプリケーション間で共有され、プロセスの境界を越えて同期されます。

しかし、このiOS Noteがあります:

Cookie は iOS のアプリケーション間で共有されません。

基本的に、アプリ内でSafariのCookieを使用できませんか?

4

1 に答える 1

9

WKWebViewiOS セキュリティ サンドボックスは、iOS ノートで発見したように、アプリ間での Cookie 共有を無効にします。これを回避する方法はありません。WKWebViewを利用することで、アプリ内で複数の Cookie を共有できますWKProcessPool

カスタム URL スキームと組み合わせてSFSafariViewController(iOS 8 以下では Safari に切り替える必要があります)、Safari からアプリに Cookie データを渡す方法があります。

このアプローチの基本は次のとおりです。

  1. を使用してSafari View ControllerをロードしますSFSafariViewController(または[[UIApplication sharedApplication] openURL:url]iOS8以下のSafariを起動します)
  2. のスクリプトは、urlCookie データを渡すカスタム URL スキームを読み込もうとします。my-custom-scheme:cookie=value
  3. その後、アプリは Cookie データを- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

ただし、ユーザーには Safari View Controller がポップアップ表示されてから閉じます (または、iOS8 以下のアプリを切り替えます)。これを静かに行う方法はありません (補足: メイン ウィンドウを強制的に の上に表示する方法はありますが、SFSafariViewControllerこれは Apple ではサポートされていません)。

于 2017-01-05T13:39:58.917 に答える