사용자가 앱 내에서 최신 앱 버전을 확인하도록 허용하는 방법은 무엇입니까?
앱에 "업데이트 확인"버튼을 추가하여 누군가 클릭하면 앱 버전을 확인하기위한 토스트 메시지 / 진행 대화 상자를 표시합니다.
새 버전이 발견되면 앱이 자동으로 휴대폰에 다운로드하고 사용자가 업데이트 된 앱을 수동으로 설치할 수 있도록합니다.
또는 다른 방법은 최신 버전을 확인하고 사용자에게 업데이트를 알릴 수있는 한 수행합니다.
Google은 두 달 전에 Play 스토어를 업데이트했습니다. 이것이 바로 지금 작동하는 솔루션입니다 ..
class GetVersionCode extends AsyncTask<Void, String, String> {
@Override
protected String doInBackground(Void... voids) {
String newVersion = null;
try {
Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName() + "&hl=en")
.timeout(30000)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.get();
if (document != null) {
Elements element = document.getElementsContainingOwnText("Current Version");
for (Element ele : element) {
if (ele.siblingElements() != null) {
Elements sibElemets = ele.siblingElements();
for (Element sibElemet : sibElemets) {
newVersion = sibElemet.text();
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return newVersion;
}
@Override
protected void onPostExecute(String onlineVersion) {
super.onPostExecute(onlineVersion);
if (onlineVersion != null && !onlineVersion.isEmpty()) {
if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
//show anything
}
}
Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion);
}
}
그리고 JSoup 라이브러리를 추가하는 것을 잊지 마세요
dependencies {
compile 'org.jsoup:jsoup:1.8.3'}
그리고 Oncreate ()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String currentVersion;
try {
currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
new GetVersionCode().execute();
}
그게 다야 .. 이 링크 덕분에
Android 앱의 새 버전 업데이트 확인 작성 시간을 절약하기 위해 https://github.com/winsontan520/Android-WVersionManager 에서 라이브러리 및 오픈 소스로 작성했습니다.
이 Android 라이브러리를 사용할 수 있습니다 : https://github.com/danielemaddaluno/Android-Update-Checker . 스토어에 새로 출시 된 앱 업데이트가 있는지 비동기 적으로 확인할 수있는 재사용 가능한 도구를 제공하는 것을 목표로합니다. Jsoup ( http://jsoup.org/ )을 사용 하여 Google Play 스토어의 앱 페이지를 구문 분석하는 새 업데이트가 실제로 존재하는지 테스트합니다.
private boolean web_update(){
try {
String curVersion = applicationContext.getPackageManager().getPackageInfo(package_name, 0).versionName;
String newVersion = curVersion;
newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + package_name + "&hl=en")
.timeout(30000)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.get()
.select("div[itemprop=softwareVersion]")
.first()
.ownText();
return (value(curVersion) < value(newVersion)) ? true : false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
그리고 "값"함수는 다음과 같습니다 (값이 0-99 사이 인 경우 작동).
private long value(String string) {
string = string.trim();
if( string.contains( "." )){
final int index = string.lastIndexOf( "." );
return value( string.substring( 0, index ))* 100 + value( string.substring( index + 1 ));
}
else {
return Long.valueOf( string );
}
}
버전 간의 불일치 만 확인하려는 경우 다음을 변경할 수 있습니다.
value(curVersion) < value(newVersion)
와 value(curVersion) != value(newVersion)
마켓의 애플리케이션 인 경우 앱 시작시 인 텐트를 실행하여 마켓 앱을 열어 업데이트를 확인합니다.
그렇지 않으면 검사기를 구현하고 업데이트하는 것이 매우 쉽습니다. 여기에 대한 내 코드가 있습니다.
String response = SendNetworkUpdateAppRequest(); // Your code to do the network request
// should send the current version
// to server
if(response.equals("YES")) // Start Intent to download the app user has to manually install it by clicking on the notification
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("URL TO LATEST APK")));
물론 백그라운드 스레드에서 요청을 수행하려면 이것을 다시 작성해야하지만 아이디어를 얻을 수 있습니다.
플레이 페이지로 이동합니다.
https://play.google.com/store/apps/details?id=com.yourpackage
표준 HTTP GET 사용. 이제 다음 jQuery가 중요한 정보를 찾습니다.
현재 버전
$("[itemprop='softwareVersion']").text()
새로운 소식
$(".recent-change").each(function() { all += $(this).text() + "\n"; })
이제 이러한 정보를 수동으로 추출 할 수 있으므로 앱에서이를 실행하는 메서드를 만들기 만하면됩니다.
public static String[] getAppVersionInfo(String playUrl) {
HtmlCleaner cleaner = new HtmlCleaner();
CleanerProperties props = cleaner.getProperties();
props.setAllowHtmlInsideAttributes(true);
props.setAllowMultiWordAttributes(true);
props.setRecognizeUnicodeChars(true);
props.setOmitComments(true);
try {
URL url = new URL(playUrl);
URLConnection conn = url.openConnection();
TagNode node = cleaner.clean(new InputStreamReader(conn.getInputStream()));
Object[] new_nodes = node.evaluateXPath("//*[@class='recent-change']");
Object[] version_nodes = node.evaluateXPath("//*[@itemprop='softwareVersion']");
String version = "", whatsNew = "";
for (Object new_node : new_nodes) {
TagNode info_node = (TagNode) new_node;
whatsNew += info_node.getAllChildren().get(0).toString().trim()
+ "\n";
}
if (version_nodes.length > 0) {
TagNode ver = (TagNode) version_nodes[0];
version = ver.getAllChildren().get(0).toString().trim();
}
return new String[]{version, whatsNew};
} catch (IOException | XPatherException e) {
e.printStackTrace();
return null;
}
}
HtmlCleaner 사용
add compile 'org.jsoup:jsoup:1.10.2'
to dependencies in APP LEVEL build.gradle
&
Just add below code and you are good to go.
private class GetVersionCode extends AsyncTask<Void, String, String> {
@Override
protected String doInBackground(Void... voids) {
try {
newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + SplashActivity.this.getPackageName() + "&hl=it")
.timeout(30000)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.get()
.select("div[itemprop=softwareVersion]")
.first()
.ownText();
return newVersion;
} catch (Exception e) {
return newVersion;
}
}
@Override
protected void onPostExecute(String onlineVersion) {
super.onPostExecute(onlineVersion);
if (!currentVersion.equalsIgnoreCase(onlineVersion)) {
//show dialog
new AlertDialog.Builder(context)
.setTitle("Updated app available!")
.setMessage("Want to update app?")
.setPositiveButton("Update", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// continue with delete
final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
Toast.makeText(getApplicationContext(), "App is in BETA version cannot update", Toast.LENGTH_SHORT).show();
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}
}
})
.setNegativeButton("Later", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
dialog.dismiss();
new MyAsyncTask().execute();
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}
}
There is no API for this, and you can't auto install it, you can just redirect them to it's Market page so they can upgrade. You can have your latest version in a file on a Web server, and have the app check it. Here's one implementation of this:
http://code.google.com/p/openintents/source/browse/#svn%2Ftrunk%2FUpdateCheckerApp
You should first check the app version on the market and compare it with the version of the app on the device. If they are different, it may be an update available. In this post I wrote down the code for getting the current version of market and current version on the device and compare them together. I also showed how to show the update dialog and redirect the user to the update page. Please visit this link: https://stackoverflow.com/a/33925032/5475941
ReferenceURL : https://stackoverflow.com/questions/7298106/how-to-allow-users-to-check-for-the-latest-app-version-from-inside-the-app
'IT Share you' 카테고리의 다른 글
Java에서 클래스 리터럴이란 무엇입니까? (0) | 2021.01.10 |
---|---|
"compilerVersion"IIS 오류를 어떻게 수정합니까? (0) | 2021.01.10 |
핵심 텍스트-NSAttributedString 줄 높이가 맞습니까? (0) | 2021.01.10 |
CSS를 통해 'semi-bold'글꼴을 설정하려면 어떻게해야합니까? (0) | 2021.01.10 |
C ++에서 조합 생성 (0) | 2021.01.10 |