0

私の UIWebview は Cookie をまったく保存していません。Cookie レス モードでスタックし、その結果、Web ページは代わりに Cookie 情報を URL に入れています。

これが私がやっていることです。UIWebview 用のシングルトンと、下部に 4 つの UITabBar ボタンがあります。各タブバー ボタンは、ユーザーをサイトの別のページに移動させます。これで、ユーザーが webview 自体を介してサイトをナビゲートしているときに、すべて問題なく、セッションが持続します。しかし、ユーザーがタブバー ボタンをクリックすると、セッションはリセットされます。

NSHttpCookieStorage を設定して、常に Cookie を受け入れるようにしました。まだ行きません。

UIWebview と NSMutableUrlRequest のシングルトンのコードは次のとおりです

    public static UIWebView instance;
    public static NSMutableUrlRequest urlRequest;
    public static NSUrlConnection connection;
    public static NSHttpCookieStorage cookie;
    static bool TokenSent = false;
    public UIWebViewSingleton () {}

    public static UIWebView Instance
    {
        get
        {
            if (instance == null)
            {   
                Debugger.Debug ("new uiwebview created");
                cookie = NSHttpCookieStorage.SharedStorage;
                cookie.AcceptPolicy = NSHttpCookieAcceptPolicy.Always;
                connection = new NSUrlConnection(); 
                instance = new UIWebView(new RectangleF(0f, 0f, 320f, 416f));
                instance.ScalesPageToFit = true;
                instance.LoadStarted += delegate {
                    UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
                };
                instance.LoadFinished += delegate {
                    UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                    AcquireUserId();
                };
                instance.MultipleTouchEnabled = false;
            }
            return instance;
        }
    }

    public static NSMutableUrlRequest UrlRequest
    {
        get
        {
            if (urlRequest == null)
            {
                urlRequest = new NSMutableUrlRequest();
            }
            return urlRequest;
        }
    }

これは、どのボタンが押されたかに基づいてページを変更する方法です。戻るボタンは正常に機能しています。

        case BTN_BACK:
            btn_ret.TouchUpInside += delegate(object sender, EventArgs e) {
                UIWebViewSingleton.Instance.GoBack();       
            };
            break;

        case BTN_GUIDE:
            btn_ret.TouchUpInside += delegate(object sender, EventArgs e) {
                UIWebViewSingleton.UrlRequest.Url = new NSUrl(StaticFileNames.GuideUrl);
                UIWebViewSingleton.Instance.LoadRequest (UIWebViewSingleton.UrlRequest);        
            };
            break;

        case BTN_HOME:
            btn_ret.TouchUpInside += delegate(object sender, EventArgs e) {
                UIWebViewSingleton.UrlRequest.Url = new NSUrl(StaticFileNames.BaseUrl);
                UIWebViewSingleton.Instance.LoadRequest (UIWebViewSingleton.UrlRequest);        
            };
            break;

私の UIWebView が Cookie を受け入れない理由について誰か考えがありますか? 私はまだ NSHttpCookieStorage とそれを正しく使用しているかどうかについて混乱しています。

どうもありがとう。

4

1 に答える 1

0

この回避策で十分でした。

Cookie は URL に含まれているため、解析してプログラムでタブバー ボタンが指す URL に挿入します。問題が解決しました。

于 2012-05-02T18:39:48.587 に答える