ArcGIS Runtime SDK for Android 授權
ESRI中國北京
要下載和安裝 ArcGIS Runtime SDK for Android,您需要注冊開發者賬戶,進而便擁有了訪問所有功能的權限,從而實現開發和測試目的。但是,這種情況下,應用程序中的所有地圖都具有水印,並且在debug消息中顯示,您的應用程序僅可用於開發目的。

要實現應用程序的部署,您必須在基礎版或標准版上進行注冊。具體的花費主要發生在下面環節:
在標准級別部署功能;
應用程序中調用了需要消耗積分(credits)的ArcGIS Online服務。
按照下面的描述,通過添加若干行代碼即可實現對應用程序的授權。授權之后,水印和調試消息將不再顯示,即可實現應用程序的部署。
下表顯示了不同級別下所具有的功能
| 許可級別 |
可用功能 |
| 開發者(僅用於開發和測試) |
所有功能(將產生水印和調試消息) |
| 基礎版 |
除了下述功能的所有功能: 本地定位器(地理編碼) 本地路徑分析 本地地理數據庫編輯 本地地理數據庫同步操作 |
| 標准版 |
所有功能 |
如何實現基礎版授權
部署一個僅使用基礎版功能的應用程序是免費的。請遵循以下步驟:
1 閱讀 Esri 許可協議(https://developers.arcgis.com/android/guide/pdf/E204_E300.pdf)
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);
這樣,您的應用程序就可以在離線和在線的環境下無時間限制地使用所有功能。
