1. 程式人生 > >Android 原生和H5 同一cookie

Android 原生和H5 同一cookie

引言

在開發過程中,我們有時會需要讓Android原生 登入完成之後記錄登入狀態,然後在內嵌的 H5 頁面也使用當前的登入賬戶,這個時候,我們可以採用 token 的方式,後臺根據 token 方式,去載入對應頁面資料。

當 token 失效時,當然也就代表了當前的使用者的登入有效期過期了。
不過 token 有效期的檢驗 邏輯很簡單,我們先不做分析,下面我們來分析下如何將登入資訊儲存到cookie,然後讓Android 和 H5 公用這個cookie。

具體操作

步驟一、當然是先去登入,獲取cookie

以HttpURLcollection為例: 
String cookieStr = conn.getHeaderField("Set-Cookie"); 

步驟二、將cookie同步到WebView中

/**
 * 將cookie同步到WebView
 * @param url WebView要載入的url
 * @param cookie 要同步的cookie
 * @return true 同步cookie成功,false同步cookie失敗
 * @Author JPH
 */
public static boolean syncCookie(String url,String cookie) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        CookieSyncManager.createInstance(context);
    }
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setCookie(url, cookie);//如果沒有特殊需求,這裡只需要將session id以"key=value"形式作為cookie即可
    String newCookie = cookieManager.getCookie(url);
    return TextUtils.isEmpty(newCookie)?false:true;
}

如果設定成功,通過cookieManager.getCookie(url)方法就可取得剛才設定的cookie,如果兩次設定cookie的url相同,則CookieManager會將上一次設定的cookie覆蓋,已達到更新的效果。

提示:

  1. 同步cookie要在WebView載入url之前,否則WebView無法獲得相應的cookie,也就無法通過驗證。
  2. 每次登入成功後都需要呼叫”syncCookie”方法將cookie同步到WebView中,同時也達到了更新WebView的cookie。如果登入後沒有及時將cookie同步到WebView可能導致WebView拿的是舊的session id和伺服器進行通訊。

優點:
方便,只需要在登陸後將cookie同步到WebView即可,省去了每次請求都需要設定一次的繁瑣。
相容性好,因為是系統原生支援的,所以相容性自然比方式一要好,不存在cookie被攔截的問題。

相關推薦

Android 原生H5 同一cookie

引言 在開發過程中,我們有時會需要讓Android原生 登入完成之後記錄登入狀態,然後在內嵌的 H5 頁面也使用當前的登入賬戶,這個時候,我們可以採用 token 的方式,後臺根據 token 方式,去載入對應頁面資料。 當 token 失效時,當然也就代表了當前的使

Android原生H5、React Native(總結連載)

一、原生開發       原生開發是系統自帶的app開發方式,也是大部分人最熟悉app開發的技術,如android、ios、wp。         原生開發依然是開發者採用最廣泛的開

react-native-android-unity(三)android原生unity互相通訊

一、android向unity傳送訊息  這個比較比較簡單,unity匯出android的程式碼包,顳部提供了介面,在UnityActivity加入如下程式碼:mUnityPlayer.UnitySe

Hybrid APP 混合開發模式的選擇之路(五:原生H5的互動原理)

原文出處:http://www.cnblogs.com/dailc/p/5931322.html 在Hybrid APP中,原生與H5的互動方式在Android和iOS上的實現是有異同的,原因是Android、iOS的通訊機制有所區別,下面介紹原生和H5相互呼叫的方法

Android中JavaJavaScript互動 Android原生html互動

1.WebView開啟JavaScript指令碼執行 WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); 2.WebView設定

iOS 原生H5結合 WKWebView的長截圖問題

前言        最近的一版,有很多....泯滅人性的地方.遇到了一些之前沒有遇到的問題,也有了一些自己的體會,先說一個跟技術分享沒有關係的經驗問題: 一定不要為了省程式碼而作過多的邏輯判斷(主要是過不了自己心裡的一關),尤其是在週期緊的情況下,無論是寫還是review都是

Unity(Android版)Android原生APP簡單實現版本更新

directory 代碼 server 頁面 提示框 自動安裝 obj nis 查看 版本檢測接口說明:(1)請求post,無參數(2)調用地址:http://www.baidu.com/rs/ver/info(3)返回結果:{ "verCode": "2",

android原生熱修復流程原理分析實現

首先apk就是一個壓縮檔案,解壓apk檔案的內容如下圖: 安卓原生熱修復主要原理圖和流程圖如下,我花了好長時間才繪好,中間改了好幾次,應該來說是很直觀明白的,其中有截取了BaseDexClassLoader的關鍵原始碼,還有DexPathList的原始碼 a.現將打

androidh5頁面互動

專案h5頁面那邊需要調native頁面的充值和提現頁面 設定支援js mWebView = view.findViewById(R.id.mall_view); settings = mWebView.getSettings();

原生頁面H5頁面

“原生應用”佔統治地位   當我們為移動裝置開發應用程式時,程式設計師通常都會選擇開發“原生應用”,“原生應用”是一種使用者必須通過手機應用商店購買下載並安裝在手機儲存器內的應用程式。“原生應用”現已成為新增手機功能的首選業界標準。   因此,大多數的程式設計師都認為跟瀏覽器應用相比

帶你徹底看懂React NativeAndroid原生控制元件之間的對映關係

此文基於react natve的 September 2018 - revision 5 版本 本人學校畢業後就當了安卓爬坑專業戶,3年來總算爬習慣了,不料今年掉進了RN這個天坑,從此開始了我的悲慘人生。。。Anyway,RN的思想還是值得學習的,今天就從Android的角度開始分析一下react nati

RNAndroid原生端通訊

 對於原生端自定義模組,註冊模組,和RN層呼叫可以參考上一篇文章React-native呼叫Android原生模組.     RN層和Native層通訊有三種法式(CallBack,Promise,RCTDeviceEventEmitter),前兩種是一對一關係

Android原生webView載入h5頁面出現載入錯亂不完全問題

一、錯誤的效果圖: 二、正確的效果圖: 三、解決方案: webView.getSettings().setDomStorageEnabled(true);//開啟DOM儲存API 四、參考文章: 地址:點選開啟連結 http://blog.csdn.net/u010

android原生程式碼中的情景模式及提示音通知

如下介紹的是5.1平臺中的設定應用中的情景模式及提示音和通知 設定的介面: 對應的java類:com.android.settings.SettingsActivity 對應的xml檔案:xml/d

Android AsyncHttpClient登入儲存cookie讀寫cookie

AsyncHttpClient有個特性:(11)持久化cookie儲存,可以將cookie儲存到你的應用程式的SharedPreferences中AsyncHttpClient Cookie相關的官方的文件This library also includes a Persis

Android原生程式碼呼叫H5 Web網頁中的Javascript函式方法

Android原生程式碼呼叫H5 Web網頁中的Javascript函式方法 重點是使用Android WebView中的evaluateJavascript()函式。 假設H5 Web網頁中有一個Javascript函式add(x,y),add(x,y)函式計算兩個數之和並返回。Andro

關於React-native裡Android原生模組元件的寫法

原生模組就是把Android裡的API匯出來給JS呼叫,說簡單一點,就是讓自己寫的Java函式能夠在React Native的js程式碼裡呼叫。比如一些實現高效能的、多執行緒的程式碼,還有譬如圖片處理、資料庫、或者各種高階擴充套件等等。 舉個栗子: Toas

Android原生程式碼攔截H5 Web頁面中JavaScript彈窗/彈框

Android原生程式碼攔截H5 Web頁面中JavaScript彈窗/彈框 res/assets/web.html: <html> <body> <script> function showAlert(){ alert("JavaScrip

Android原生代碼攔截H5 Web頁面中JavaScript彈窗/彈框

conf 彈框 @override open 啟用 pat build support gets   <html>    <body>    <script>    function showAlert(){    alert("Java

H5 調 android 相機相簿

public class IndexActivity extends AppCompatActivity { private ValueCallback<Uri> uploadMessage; private ValueCallback<Uri[]> upload