在使用ArcGIS for Android 進行開發的時候,你會注意到你的地圖上會有Licensed For Developer Use Only
和Powered by Esri
等提示。如果你想去掉這些信息,你需要獲取Esri的許可證。下面講講具體怎麼做。
我們可以去ArcGIS Runtime SDK for Android
查看怎麼給應用授權,鏈接地址:
https://developers.arcgis.com/android/latest/guide/license-your-app.htm
在將ArcGIS Runtime應用程序部署到生產環境中之前,需要使用四種ArcGIS運行時許可證級別之一進行許可:Lite(免費),Basic,Standard和Advanced。
請注意,在部署您的應用程序時可能會產生其他成本,例如應用程序中由ArcGIS Online服務使用的積分。例如,如果您在您的應用中使用ArcGIS Online,並且每個月使用超過50個積分,或者您的應用可以產生收入,則必須購買部署計劃。
Esri的許可證級別
Esri提供四種ArcGIS Runtime許可證級別:精簡版(免費),基礎版,標準版和高級版。每個額外的級別爲您的應用程序用戶打開更多功能。
作爲ArcGIS開發人員計劃的成員,您可以下載和安裝任何ArcGIS Runtime SDK並訪問所有API功能以進行開發。 您可以免費成爲開發者計劃的成員。 使用ArcGIS Runtime SDK開發應用程序不需要任何費用,也無需授權開發計算機。 但是,應用程序中的任何地圖或場景都將被嵌入水印,並且可能會在運行時生成調試輸出消息,以指示您的應用程序僅供開發人員使用。
在將ArcGIS Runtime應用程序部署到生產環境中之前,您需要對其進行許可。 Esri提供四種ArcGIS Runtime許可證級別:精簡版,基本版,標準版和高級版。 在您的應用中訪問ArcGIS Online並每月使用超過50個積分或創造收入時,您需要購買ArcGIS Online部署計劃。 有關條款和條件的更多信息,請參閱我們的常見問題解答。
官方關於這四種賬戶的說明:https://developers.arcgis.com/arcgis-runtime/licensing/
四種許可證的詳細說明
1、精簡版
功能
1、可以查看ArcGIS平臺上的地圖,圖層和包;
2、可以編輯公共服務中的功能。 這些服務在互聯網上可用,並不安全;
3、可以同步要素圖層服務生成移動地理數據庫;
4、可以同步更新要素服務圖層到本地移動地理數據庫;
5、地理編碼或反向地理編碼,需要使用到ArcGIS Online的世界地理編碼服務中的for_storage參數。具體可以參考ArcGIS Online文檔中的地理編碼服務;
6、簡單和優化的進程;
7、使用網絡服務計算服務區域並找到最近的設施。
許可證密鑰
免費提供。 登錄到您的ArcGIS for Developers帳戶,轉到許可您的ArcGIS Runtime應用程序,然後將許可證密鑰複製到您的應用程序中。
指定用戶
在ArcGIS Online組織或本地門戶網站中的1級或2級註冊用戶。
2、基礎版
功能
1、精簡版的所有功能;
2、在移動地理數據庫中編輯要素和要素服務上編輯要素,這些只能在本地網絡上訪問或者固定;
3、將移動地理數據庫中編輯的要素對象(幾何:點線面)、屬性、附件同步到要素服務上;
4、在門戶網站上添加,更新或刪除內容。
許可證密鑰
購買可供部署的包,可以聯繫爲您服務的Esri辦事處,或者如果您在美國,致電Esri,電話是1-800-447-9778。
指定用戶
在ArcGIS Online組織或本地門戶網站中的2級註冊用戶。
3、標準版
功能
1、基礎版的所有功能;
2、訪問額外的數據,包括:
Shapefiles
GeoPackages
- ENC層(S-57)
- 本地柵格圖層
- 使用柵格功能
- 本地具有海拔數據的柵格。
3、視覺分析,視線、視域。
許可證密鑰
購買可供部署的包,可以聯繫爲您服務的Esri辦事處,或者如果您在美國,致電Esri,電話是1-800-447-9778。
指定用戶
暫時不可用。
4、高級版
功能
1、標準版的所有功能。
許可證密鑰
購買可供部署的包,可以聯繫爲您服務的Esri辦事處,或者如果您在美國,致電Esri,電話是1-800-447-9778。
指定用戶
暫時不可用。
擴展許可證
ArcGIS Runtime提供擴展,可以訪問其他功能,分析工具和/或數據。
1、 分析
功能
1、最低使用的等級爲 標準版;
2、使用網絡服務計算服務區域並找到最近的設施。
許可證密鑰
無
指定用戶
無
2、 ArcGIS Runtime的街道地圖(StreetMap Premium)
功能
1、適用於所有許可證級別
- 在移動地圖包中離線使用
- 高質量的製圖地圖
- 離線地理編碼
- 離線路由
2、可以爲以下地區下載街道地圖(StreetMap Premium):
- 北美
- 拉丁美洲
- 歐洲
- 亞太地區
- 中東和非洲
- 日本
每個區域性的移動地圖包都被許可使用擴展許可證密鑰。 您可以使用這些軟件包與相關許可證密鑰的任意組合。
補充:
ArcGIS Runtime的StreetMap Premium是一種新的數據產品,作爲ArcGIS Runtime的擴展,它提供了豐富的街道數據,爲高質量的地圖繪製提供地理編碼和路徑支持。ArcGIS Runtime的StreetMap Premium運行時映射在世界所有地區都是一致的,可以離線使用; 他們可以同時滿足您應用中的地址定位器,街道網絡數據集和底圖的需求。
注意:
StreetMap Premium for ArcGIS Runtime許可證由客戶購買並提供。 您必須爲您的應用程序提供訪問此許可證密鑰的機制。 許可證過期後,StreetMap Premium數據不能使用。 一旦到期,應用程序用戶必須購買另一個許可證才能繼續使用數據。 您必須在您的應用中提供正確的消息,以通知用戶其許可證已過期或即將到期。
許可證密鑰
許可證可供購買。
StreetMap Premium for ArcGIS運行時延伸許可證按年度提供。 許可證過期後,不能使用StreetMap Premium數據集。
請聯繫爲您服務的Esri辦事處,或者如果您在美國,致電Esri,電話是1-800-447-9778。
指定用戶
暫時不可用。
許可證的使用
有兩種方式可以在你的應用中設置許可證的級別,分別是Named user
(指定用戶) 和 License key
(註冊碼) 。
1、Named user
(指定用戶)
Named user
是指ArcGIS的組織帳戶,它是ArcGIS Online或ArcGIS Enterprise組織中的成員。獲取應用運行時的許可證只是指定用戶的某一項權利。你需要在應用程序中引入代碼,以便程序可以登錄到門戶並返回和指定用戶相關聯的許可證信息。
這種方式支持30天週期的標準版許可,在30天的許可週期內可實現離線使用。但是超過30天最長使用期,應用需要在聯網狀態下重新獲取標準版許可,否則只能使用基礎版功能。
2、License key
許可證密鑰
許可證密鑰是包含許可證詳細信息的文本字符串,許可證密鑰可以通過ArcGIS for Developer帳戶獲取,也可以在ArcGIS Runtime部署包中購買。許可證密鑰通常編譯到您的運行時應用程序中。
購買ArcGIS Runtime SDK標準版永久授權,這種方式可以實現許可永久離線使用。在絕對禁止聯網的情況下,需要採用這種模式。
授權應用的代碼集成
1、獲得部署許可
-
閱讀最終用戶許可協議。
-
在使用任何ArcGIS Runtime功能之前插入如下代碼。
-
調用ArcGISRuntimeEnvironment單例對象上的setLicense方法以使用許可證密鑰許可應用程序。代碼如下:
//ArcGISRuntimeEnvironment.setLicense(String licenseKey);
ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud#########,day-month-year,####################");
您的應用現已獲得部署許可。
2、使用指定用戶的帳戶授權您的應用程序
將指定用戶添加到你的代碼中,以便你的應用能夠登錄和使用ArcGIS組織的帳戶。
在應用運行的時候,用戶必須成功登錄才能返回應用程序將使用的許可證信息(確認許可證級別)。
步驟如下:
-
閱讀最終用戶許可協議。
-
在使用任何ArcGIS Runtime功能之前插入如下代碼。
-
允許應用使用ArcGIS組織的帳戶進行身份驗證。 在加載門戶網站時,獲取LicenseInfo並使用它來許可應用程序。 作爲該過程的一部分,請保存許可證信息,以準備在離線環境中使用您的應用程序長達30天。代碼如下:
// connect to ArcGIS Online or an ArcGIS portal as a named user
// The code below shows the use of token based security but
// for ArcGIS Online you may consider using Oauth authentication.
UserCredential credential = new UserCredential("user", "password");
// replace the URL with either the ArcGIS Online URL or your portal URL
Portal portal = new Portal("https://your-org.arcgis.com/");
portal.setCredential(credential);
// load portal and listen to done loading event
portal.loadAsync();
portal.addDoneLoadingListener(() -> {
// get license info from the portal
LicenseInfo licenseInfo = portal.getPortalInfo().getLicenseInfo();
// Apply the license at Standard level
ArcGISRuntimeEnvironment.setLicense(licenseInfo);
});
- 如果您將許可證信息保存在本地存儲中,則可以使用保存的許可證信息在離線環境中啓動和許可您的應用程序。 從存儲中檢索許可證並授權您的應用程序。代碼如下:
// connect to ArcGIS Online or an ArcGIS portal as a named user
// The code below shows the use of token based security but
// for ArcGIS Online you may consider using Oauth authentication.
UserCredential credential = new UserCredential("user", "password");
// replace the URL with either the ArcGIS Online URL or your portal URL
Portal portal = new Portal("https://your-org.arcgis.com/");
portal.setCredential(credential);
// load portal and listen to done loading event
portal.loadAsync();
portal.addDoneLoadingListener(() -> {
// get license info from the portal
LicenseInfo licenseInfo = portal.getPortalInfo().getLicenseInfo();
// Apply the license at Standard level
ArcGISRuntimeEnvironment.setLicense(licenseInfo);
});
擴展級別許可證的使用
使用擴展級別許可證的步驟和上面的部署許可類似,只是多一個參數。
-
閱讀最終用戶許可協議。
-
在使用任何ArcGIS Runtime功能之前插入如下代碼。
-
調用ArcGISRuntimeEnvironment單例對象上的setLicense方法以使用許可證密鑰許可應用程序。代碼如下:
//ArcGISRuntimeEnvironment.setLicense(String licenseKey, List<String> extensions);
ArcGISRuntimeEnvironment.setLicense("runtimeadvanced,1000,rud#########,day-month-year,####################",
Arrays.asList("runtimeanalysis,1000,rud#########,day-month-year,####################", "another license extension code"));
您的應用現已獲得部署許可。
註冊賬戶
在代碼中使用時,你需要ArcGis的開發者賬戶,但是在國內由於一些原因你無法直接在Gis的開發者網站上進行註冊,這時你有兩種方式獲得這個ArcGis的開發者賬戶
-
1、你先註冊 arcgis online 的試用賬戶,然後使用 arcgis online 的試用賬戶去登錄Gis的開發者網站,但是這種方式有一個弊端,就是你的 arcgis online 的試用賬戶是有時間限制的,到期之後需要續費或者轉爲公共賬戶,續費(不可能的,o(╥﹏╥)o,因爲窮),而轉爲公共賬戶之後,你就沒辦法在ArcGIS Runtime / Licensing 界面獲取你的應用授權碼。
-
2、就是直接註冊Gis的開發者賬戶,不用arcgis online 的試用賬戶去登錄,這種方式就需要你使用VPN繞過“牆”的限制了。使用這種方式就不用理會賬戶的時間限制了,註冊Gis的開發者之後,我們就可以在ArcGIS Runtime / Licensing 界面獲取你的應用授權碼了。
1、註冊 arcgis online 的試用賬戶
第一次使用時需要先註冊arcgis online 的試用賬戶,地址arcgis online 的試用賬戶http://www.arcgis.com ,點擊“試用ArcGIS”
填寫相關信息
在郵件中確認
確認後,填寫相關信息
在這個填寫完之後,還有一個填寫組織(公司)相關信息的界面,忘記截圖了o(╥﹏╥)o,都填寫完整之後我們可以來到這個界面
可以看到我們的賬號級別是第二級的,但是賬號有效期只有21天。如果要永久使用需要購買,聯繫方式如下
2、登錄arcgis開發者網站
使用上面註冊的賬號在Gis的開發者網站上登錄,https://developers.arcgis.com/,或者直接在Gis的開發者網站上註冊(翻牆),登錄之後界面如下
我們點擊“New Application”創建一個新的應用,填寫新應用的標題 , 標籤 ,和描述。
**創建完成之後,可以看到對應的 Client ID **
獲取授權
1、使用精簡版(lite)的授權
-
登錄你的ArcGis 開發者賬號 https://developers.arcgis.com
-
在ArcGIS Runtime / Licensing 界面獲取你的應用授權碼 https://developers.arcgis.com/arcgis-runtime/licensing/
-
點擊
Show my ArcGIS Runtime Lite license key
獲取你的授權碼
- 在使用ArcGis 之前調用以下代碼
ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud#########,day-month-year,####################");
2、使用用戶名密碼進行授權
在使用ArcGis 之前調用以下代碼
UserCredential credential = new UserCredential("user", "password");
final Portal portal = new Portal("https://your-org.arcgis.com/");
portal.setCredential(credential);
portal.loadAsync();
portal.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
LicenseInfo licenseInfo = portal.getPortalInfo().getLicenseInfo();
ArcGISRuntimeEnvironment.setLicense(licenseInfo);
}
});
前面提到的離線使用許可證信息,我們可以這樣寫
boolean connected = MyUtils.isNetWorkConnected(this);
if (!connected) {
new CenterHintToast(MainActivity.this, "您當前處於離線狀態!");
} else { //只要有網就去更新許可證信息zuo12138zhijie12138##
UserCredential credential = new UserCredential("yourname", "password");
final Portal portal = new Portal("https://C-NBS.maps.arcgis.com/");
portal.setCredential(credential);
portal.loadAsync();
portal.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
PortalInfo portalInfo = portal.getPortalInfo();
if (portalInfo != null) {
LicenseInfo licenseInfo = portalInfo.getLicenseInfo();
if (licenseInfo != null) instance.setLicenseInfo(licenseInfo.toJson());
}
}
});
}
String info = instance.getLicenseInfo();
if (!TextUtils.isEmpty(info)) { //本地存有許可證信息
LicenseInfo licenseInfo = LicenseInfo.fromJson(info);
ArcGISRuntimeEnvironment.setLicense(licenseInfo);
}
if (portalInfo != null),我加上這個非空判斷是因爲我在使用了VPN後,有網的情況下獲取的portalInfo 有可能爲null
試用賬戶到期後的處理
如果你的使用賬戶到期了,你將不能使用上述的“用戶名密碼獲取授權”的方式去消除水印,但依舊可以使用“精簡版的授權”。
如果試用賬戶到期,官方會郵件通知你續費或轉爲公共賬戶。