Embedded BrowserはすごくいいAssetでCookieも使えるんですが、現バージョン(1.1.0)だとアプリを落とすとCookieも消されてしまいます。次回アプリ起動時にも前回のCookieを引き継ぐには以下2つ手順が必要です。
動作環境:Windows10 Pro, Unity 5.3.4f1
1. Cookieを取得して保存する
Embedded BrowserにCookieがある状態で取得、アプリを落とす前に保存しておきます。
2. Cookieを読み込んでEmbedded Browserにセットする
アプリを再度起動させた後に1で保存したCookieファイルを読み込みEmbedded Browserにセットしてやります。
全体のコードはこんな感じです。ここでは最低限のことしか書いていないためエラー処理やjsonで保存、読み込みするなどのコードは追加する必要があります。
SimpleController.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System.Collections.Generic; using UnityEngine; using ZenFulcrum.EmbeddedBrowser; [RequireComponent(typeof(Browser))] public class SimpleController : MonoBehaviour { private Browser browser; private Cookie cookie; public void Start() { browser = GetComponent<Browser>(); cookie = new Cookie(browser.CookieManager); } public void GetCookieClick() { browser.CookieManager.GetCookies(); } public void SetCookieClick() { Dictionary<string, string> cookieDic = new Dictionary<string, string>(); cookieDic.Add("name", "accessToken"); cookieDic.Add("value", "98fa88b0-28c0-43b4"); cookieDic.Add("domain", "mizutanikirin.net"); cookieDic.Add("creation", "2017-02-15 08:35:02.955"); cookieDic.Add("expires", "2018-02-15 08:35:02.000"); cookieDic.Add("httpOnly", "0"); cookieDic.Add("lastAccess", "2017-02-15 08:35:02.955"); cookieDic.Add("path", "/"); cookieDic.Add("secure", "0"); cookie.SetCookie(cookieDic); } } |
Assets/ZFBrowser/Scripts/Cookie.csに以下を追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public void SetCookie(Dictionary<string, string> cookie) { Debug.Log("SetCookie"); original = new NativeCookie(); original.name = cookie["name"]; original.value = cookie["value"]; original.domain = cookie["domain"]; original.creation = cookie["creation"]; original.expires = cookie["expires"]; original.httpOnly = byte.Parse(cookie["httpOnly"]); original.lastAccess = cookie["lastAccess"]; original.path = cookie["path"]; original.secure = byte.Parse(cookie["secure"]); BrowserNative.zfb_editCookie(cookies.browser.browserId, original, BrowserNative.CookieAction.Create); } |
1. Cookieを取得して保存する
SimpleController.cs
1 |
browser.CookieManager.GetCookies(); |
この部分でCookieを取得しています。ここで取得したデータを保存しましょう。
2.Cookieを読み込んでEmbedded Browserにセットする
SimpleController.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public void SetCookieClick() { Dictionary<string, string> cookieDic = new Dictionary<string, string>(); cookieDic.Add("name", "accessToken"); cookieDic.Add("value", "98fa88b0-28c0-43b4"); cookieDic.Add("domain", "mizutanikirin.net"); cookieDic.Add("creation", "2017-02-15 08:35:02.955"); cookieDic.Add("expires", "2018-02-15 08:35:02.000"); cookieDic.Add("httpOnly", "0"); cookieDic.Add("lastAccess", "2017-02-15 08:35:02.955"); cookieDic.Add("path", "/"); cookieDic.Add("secure", "0"); cookie.SetCookie(cookieDic); } |
1で保存したCookieファイルを読み込んだ後そのデータを Dictionary に代入して cookie.SetCookie に値を渡します。(※ここでは読み込んだものとして説明のためにaccessTokenなどstringを代入しています。)
cookie.SetCookie ではCookie.cs内で宣言されている NativeCookie original にデータを代入しつつ
Cookie.cs
1 |
BrowserNative.zfb_editCookie(cookies.browser.browserId, original, BrowserNative.CookieAction.Create); |
でCookieを作成します。
コメントを残す