ArcGIS Runtime SDK for Android 授權(arcgis android 去除水印)
要下載和安裝 ArcGIS Runtime SDK for Android,您需要註冊開發者賬戶,進而便擁有了訪問所有功能的許可權,從而實現開發和測試目的。但是,這種情況下,應用程式中的所有地圖都具有水印,並且在debug訊息中顯示,您的應用程式僅可用於開發目的。
要實現應用程式的部署,您必須在基礎版或標準版上進行註冊。具體的花費主要發生在下面環節:
在標準級別部署功能;
應用程式中呼叫了需要消耗積分(credits)的ArcGIS Online服務。
按照下面的描述,通過新增若干行程式碼即可實現對應用程式的授權。授權之後,水印和除錯訊息將不再顯示,即可實現應用程式的部署。
下表顯示了不同級別下所具有的功能
許可級別 |
可用功能 |
開發者(僅用於開發和測試) |
所有功能(將產生水印和除錯訊息) |
基礎版 |
除了下述功能的所有功能: 本地定位器(地理編碼) 本地路徑分析 本地地理資料庫編輯 本地地理資料庫同步操作 |
標準版 |
所有功能 |
如何實現基礎版授權
部署一個僅使用基礎版功能的應用程式是免費的。請遵循以下步驟:
2 訪問 developer.arcgis.com並用ArcGIS for Developer賬戶登入
3 登入後,將會出現 Applications 區域。通過點選 New Application 或 Create an Application以註冊您的應用程式。在下一頁上,填寫所有欄位項,而後點選 Create Application以完成應用程式的註冊。
4 註冊完畢後,點選並選擇 Runtime SDK Licensing,拷貝此處的Client ID字串。
5 在您的應用程式中,利用下面的程式碼設定 Client ID,將這行程式碼放置在 ArcGIS Runtime SDK 的功能之前
ArcGISRuntime.setClientId("myClientID");
這樣,就完成了SDK 基礎版的授權。
如何實現標準版授權?
按照下列兩種方式完成標準版授權:
1 如果您的應用程式至少每隔30天都會連線至 ArcGIS Online 或 portal 的話,可以按照 利用 ArcGIS Online 或 Portal for ArcGIS 授權應用程式的方式;
2 如果應用程式無法聯網或超過30天都無法聯網的情況下,需要用許可碼進行授權。通過購買標準部署包來獲取授權碼。
利用ArcGIS Online 或 Portal for ArcGIS 授權應用程式
使用者可以通過ArcGIS Online或Portal for ArcGIS 的組織賬戶進行驗證,以解鎖標準版功能30天時間。接下來的30天中,此應用程式就可以在離線的狀態下使用。請按照下面的方式進行授權
1 參照基礎版授權的步驟獲取和設定Client ID;
2 允許應用程式賬戶利用ArcGIS Online 或 Portal for ArcGIS 進行驗證。您必須在使用標準版功能之前執行此步驟。在此過程中,請儲存許可資訊以準備在離線環境中有效使用應用程式達30天。具體方式如下:
/*建立一個登陸UI允許使用者通過OAuth登陸到portal,OAuth是一種推薦的登陸到portal中的認證方法。成功登陸後(獲取的UserCredential),通過從認證的Portal例項中獲取LicenseInfo物件,將許可級別設定為標準版*/
private void signInWithOAuth() {
mOAuthView = new OAuthView(this, PORTAL_URL, CLIENT_ID, OAUTH_EXPIRATION_NEVER,
new CallbackListener<UserCredentials>() {
@Override
public void onError(Throwable e) {
MessageDialogFragment.showMessage(getString(R.string.oauth_login_failed), getFragmentManager());
}
@Override
public void onCallback(UserCredentials credentials) {
if (credentials != null) {
setStandardLicenseWithLicenseInfo(credentials);
} else {
MessageDialogFragment.showMessage(getString(R.string.oauth_login_failed), getFragmentManager());
}
}
});
}
/* 此方法嘗試將許可級別設定為標準版。標準版許可通過從授權的Portal例項中獲取LicenseInfo物件。此授權Portal例項從前面的OAuth登陸步驟中獲取的UserCredentials中建立 */
private void setStandardLicenseWithLicenseInfo(UserCredentials credentials) {
Portal portal = new Portal(PORTAL_URL, credentials);
PortalInfo portalInfo = null;
try {
portalInfo = portal.fetchPortalInfo();
} catch (Exception e) {
MessageDialogFragment.showMessage(getString(R.string.standard_license_failed), getFragmentManager());
return;
}
LicenseInfo licenseInfo = portalInfo.getLicenseInfo();
LicenseResult licenseResult = ArcGISRuntime.License.setLicense(licenseInfo);
LicenseLevel licenseLevel = ArcGISRuntime.License.getLicenseLevel();
if (licenseResult == LicenseResult.VALID && licenseLevel == LicenseLevel.STANDARD) {
MessageDialogFragment.showMessage(getString(R.string.standard_license_succeeded), getFragmentManager());
} else {
MessageDialogFragment.showMessage(getString(R.string.standard_license_failed), getFragmentManager());
}
showMap();
}
3 如果您將許可資訊儲存在本地儲存中,您的應用程式可在離線環境下啟動。您需要按照下面方式授權應用程式
// 設定 client ID
ArcGISRuntime.setClientId("myClientID");
// 此處新增程式碼以獲取本地儲存的許可資訊
String loadedString = "String fetched from local storage"
// 由JSON 字串建立LicenseInfo物件
LicenseInfo licenseInfo = LicenseInfo.fromJson(lodedString);
// Apply the license
ArcGIS Runtime.License.setLicense(licenseInfo);
儲存到本地的許可資訊可允許您在接下來的30天中離線使用您的應用程式,之後許可資訊將過期。此應用程式必須再次連線至 ArcGIS Online 或 Portal 或 ArcGIS 來獲取許可資訊以再用30天。如果應用程式嘗試使用過期的許可資訊,則將只能使用其中的基礎功能。
使用許可碼來授權應用程式
1 按照基礎版授權步驟獲取應用程式的 Client ID。
2 聯絡 Esri 獲取許可碼。
3 按照下面的示例,在設定了ClientID且使用ArcGIS Runtime功能之前設定許可碼
// 設定 Client ID
ArcGISRuntime.setClientId("myClientID");
// 示例許可碼;從客服或esri分銷商獲取真正的許可碼
String licenseCode = "runtimestandard, 101, rux00000, none, XXXXXXX";
//在應用程式中利用許可碼啟用標準版功能
ArcGISRuntime.License.setLicense(licenseCode);
這樣,您的應用程式就可以在離線和線上的環境下無時間限制地使用所有功能。