通過RSS實現app的自動更新

2021-06-21 08:22:30 字數 2182 閱讀 5874

其實這個想法早在十年前我還在做桌面應用的時候就想過了,而且還在乙個delphi程式裡嘗試了一下,但是因為後來沒再做桌面應用,這事也就放下了。

最近在做移動應用,又開始覺得需要這樣乙個功能。本來這種事情交給google play處理就好了,但是因為國內的奇葩環境,完全依賴google play並不現實,所以大部分國產應用都實現了自己的自動更新功能。

問題在於發布更新的過程我希望能簡單化,所以選中了rss作為服務端的api。這樣每次發布乙個新版本,我只需要簡單地發一篇blog即可——只要在其中提供必要的版本資訊,客戶端即可從rss輸出中得到版本更新的資訊。

本來是只需要在客戶端實現乙個rss解析功能即可,但是因為我已經實現了一套rest的客戶端庫,所以為了統一訪問,又做了個服務端,把rss轉成json返回。

是乙個簡單的php頁面,功能就是用curl讀取rss的內容,然後通過正規表示式解析(懶得用xml了),轉成json格式返回。

**如下:

<?php

define('user_agent', 'auto update');

define('rss_url', '');

function rss_process($url)

}function get_entry()

}if (preg_match("/(.*?)<\/description>/is", $item, $matches))

private static final string latest = "/check_update";

private static final string last_check = "last_check";

private context mcontext;

private asyncrestcall mupdater;

private string mtitle;

private string mversion;

private sharedpreferences mpref;

public updatechecker(context context, string updateurl, string title)

public string getversion() catch (namenotfoundexception e)

mversion = pinfo.versionname;

}return mversion;

}public void checknow(int interval)

}public void checknow()

public void checkdaily()

@override

public void onsuccess(object result)

});builder.setnegativebutton(mcontext.getstring(android.r.string.cancel),

new alertdialog.onclicklistener()

});builder.show();}}

@override

public void onerrororcancel(throwable e)

}

使用方法很簡單,在mainactivity裡呼叫checkdaily,它的功能是如果距離上次檢查超過24小時,則自動檢查一次。然後在about頁面裡放乙個立即檢查的按鈕,在裡面呼叫checknow,不過它也不是每次都立即檢查的,最快的檢查頻率被限制在一分鐘。

例子**如下:

//  mainactivity

mchecker = new updatechecker(this, update_url, this.getstring(r.string.new_version));

mchecker.checkdaily();

// about oncreate

mchecker = new updatechecker(view.getcontext(), update_url, this.getstring(r.string.new_version));

@override

public void onclick(view v)

基本上就是這樣。其中asyncrestcall是我自己實現的一套rest客戶端庫,還沒有穩定,就不放出來了,請用自己喜歡的實現方式去實現。

app自動更新 android

public string getvesionname context context catch namenotfoundexception e return versionname 複製 更新以及安裝程式需要的許可權,在androidmanifest.xml中新增 複製 獲取apk的versio...

Spring Cloud Bus實現自動更新配置

1.配置環境 版本 spring boot版本2.0.3.release,spring cloud版本finchley.sr1,rabbitmq 3.7.7 說明 本文章是在的基礎上完成,2.實現原理 如下圖所示 通過訊息佇列mq傳遞訊息 修改配置,對外暴露 actuator bus refresh...

dede整站RSS訂閱自動更新動態輸出

1,新增乙個rss模板,檔名為 rss index.htm,將rss模板檔案儲存到模板檔案 templets plus 這個外掛程式目錄下。檔案內容為 zh cn field arcurl field typename field pubdate function strftime a,d b y ...