ArcGIS Runtime SDK for iOS (バージョン 100.x) を使用して開発したアプリケーションを配布する場合に必要なライセンス認証の手順を説明します。
ArcGIS Platform のロケーションサービスを使用する場合は、アプリで API キーを設定する必要があります。API キーの詳細はAPI キーの取得を、APIキーの設定方法はアプリの作成のAPI キーを設定するをご覧ください。
開発したアプリケーションのライセンス認証のステップは以下の通りです。
ArcGIS Runtime SDK for iOS には Lite、Basic、Standard の 3 つのライセンス レベルと Analysis エクステンションがあります。開発したアプリケーションが使用する機能に応じて、適切なライセンス レベルを選択してください。
各ライセンスで利用可能な機能の概要は以下の表をご参照ください。
ライセンス | 利用できる機能 |
---|---|
Lite | ・地図表示(2D/3D) ・フィーチャの表示/検索 ・フィーチャのオンライン/オフライン編集(パブリックなフィーチャ サービス) ・ルート検索/到達圏解析/最寄り施設検索 ・住所検索/リバース ジオコーディング |
Basic | ・Lite ライセンスで利用できるすべての機能 ・フィーチャのオンライン/オフライン編集(セキュアなフィーチャ サービス) ・モバイル ジオデータベースの編集 ・ArcGIS Online/Portal for ArcGIS のコンテンツの編集 |
Standard | ・Basic ライセンスで利用できるすべての機能 ・シェープファイルの表示/編集 ・GeoPackage の表示/編集 ・KML(ローカル ファイル)の表示 ・ラスター データの表示/解析 ・航海用電子海図(ENC)の表示 |
Analysis Extension | ・Standard ライセンス以上で利用可能なエクステンション・オフラインでの到達圏解析/最寄り施設検索 |
ライセンスの詳細はESRIジャパン製品ページをご参照ください。
ライセンスの認証は次の2つの方法があります。
ライセンスキーを使用した認証
指定ユーザーによるアカウント認証
■ ArcGIS Online または ArcGIS Enterprise バージョン 10.8 以降をご利用の場合
User Type | Runtime Level |
---|---|
Viewer | Lite |
Editor / Field Worker | Basic |
Creator / GIS Professional Basic | Standard ※1 |
GIS Professional Standard / GIS Professional Advanced | Advanced ※1,2 |
※1 Standard/Advanced は ArcGIS Runtime (Android/iOS/.NET) 100.7 以降から対応しております。
※2 ArcGIS Runtime SDK for iOS には Advanced ライセンスはありません。
■ ArcGIS Enterprise 10.7 以前をご利用の場合
User Type | Runtime Level |
---|---|
レベル1 または Viewer タイプ以上 | Lite |
レベル2 または Editor タイプ以上 | Basic |
ライセンスキーを使用した認証
ArcGIS Online / Portal for ArcGIS へのログインによる認証
ライセンスキーを使用した認証
ArcGIS Online / Portal for ArcGIS へのログインによる認証
ライセンスキーを使用した認証
ArcGIS Online / Portal for ArcGIS へのログインによる認証 注意:この認証は、ArcGIS Runtime 100.7 より以前のバージョンでは使用できません。また、Protal for ArcGIS をご利用の場合は、ArcGIS Enterprise 10.7 以前のバージョンでは使用できません。
ライセンスキーを使用した認証
ArcGIS Online / Portal for ArcGIS へのログインによる認証
注意:この認証は、ArcGIS Runtime 100.7 より以前のバージョンでは使用できません。また、Protal for ArcGIS をご利用の場合は、ArcGIS Enterprise 10.7 以前のバージョンでは使用できません。
以下の認証に応じた作業を行ってください。
ArcGIS Runtime Lite のライセンスキーを ArcGIS Developers のサイトから取得し、取得したライセンスキーを利用して、アプリケーションを Lite ライセンスで認証することができます。 最初に以下の手順で Lite レベルのライセンスキーを取得します。
ArcGIS Developers: ArcGIS Runtime license ページにアクセスします。
表示されたライセンスキーをコピーします。
次に、アプリケーションのコードにおいて ArcGIS Runtime SDK の機能が呼び出される前に、以下のコードを使用してアプリケーションにコピーしたライセンスキーを設定します。
// 取得したライセンス文字列でアプリのライセンスを設定します
do {
let result = try AGSArcGISRuntimeEnvironment.setLicenseKey("runtimelite,1000,rud#########,none,####################")
print("License Result : \(result.licenseStatus)")
}
catch let error as NSError {
print("error: \(error)")
}
ArcGIS Runtime の配布パックを購入し、取得したライセンスキーを利用して、アプリケーションを認証することができます。
ArcGIS Runtime の配布パックの購入についてはESRIジャパンにお問合せください。ArcGIS Runtime の配布パックをご購入頂いた場合、ESRIジャパンよりライセンスキーをメールにてお送りします。
アプリケーションのコードにおいて ArcGIS Runtime SDK の機能が呼び出される前に、以下のコードを使用して配布パックのライセンスキーを設定します。
// 取得したライセンス文字列でアプリのライセンスを設定します
do {
let result = try AGSArcGISRuntimeEnvironment.setLicenseKey("runtimestandard,1000,rud#########,day-month-year,####################")
print("License Result : \(result.licenseStatus)")
}
catch let error as NSError {
print("error: \(error)")
}
Analysis Extension ライセンスを認証する場合は以下のコードを使用します。
// 基本ライセンスとエクステンション ライセンスのリストを設定します
do {
let result = try AGSArcGISRuntimeEnvironment.setLicenseKey("runtimestandard,1000,rud#########,day-month-year,####################", extensions: ["runtimeanalysis,1000,rud#########,day-month-year,####################"])
print("License Result : \(result.licenseStatus)")
}
catch let error as NSError {
print("error: \(error)")
}
アプリケーションの実行時に、アプリケーションを利用するユーザーが保有する ArcGIS Online 組織向けプランもしくは Portal for ArcGIS の指定ユーザー アカウントを使用して ArcGIS Online / Portal for ArcGIS にログインすることで、ライセンスを取得することができます。
アプリケーションのコードにおいて ArcGIS Runtime SDK の機能が呼び出される前に、以下のコードを使用してライセンスを取得します。プロセスの一環として、アプリがオフライン環境で最大 30日 間使用されることに備えて、ライセンス情報を保存します。
認証方法の詳細については、「License your app with a named user account(英語)」や「Security and authentication(英語)」も併せてご覧ください。
// Portal クラスを作成し、指定ユーザーが資格情報を提供するようにします
let theURL = URL(string: "https://www.arcgis.com")
// 指定ユーザーが資格情報を使用してログインするように要求します
self.portal = AGSPortal(url: theURL!, loginRequired: true)
// ポータルをロードします
self.portal.load { (error) in
if let error = error {
print(error)
}
else {
// ポータルからユーザーのライセンス情報を取得します
self.portal.fetchLicenseInfo { (licenseInfo, error) in
if let error = error {
print("ユーザーのライセンスの取得中にエラーが発生しました... \(error)")
return
}
// 指定ユーザーの licenseInfo を使用してライセンスを設定します
do {
let result = try AGSArcGISRuntimeEnvironment.setLicenseInfo(licenseInfo!)
}
catch let error as NSError {
print("error: \(error.localizedDescription)")
}
// これでアプリがライセンス認証されました
// アプリを起動してオフラインでライセンスを取得できるように、ライセンス情報を保存します
// この例では、licenseDictionary をキーチェーンに保存します
var licenseDictionary: NSDictionary?
do {licenseDictionary = try licenseInfo?.toJSON() as! NSDictionary?
} catch {
print("LicenseInfo は利用できません")
}
let keychainItem = AGSKeychainItem(identifier: "com.your_org.your_app_name", accessGroup: nil, acrossDevices: false)
keychainItem.writeObject(toKeychain: licenseDictionary!, completion: { (writeError) in
if let error = writeError {
print("キーチェーンへの書き込み中にエラーが発生しました... \(error)")
}
})
}
}
}
注意:上記のコードスニペットは、ArcGIS Runtime 100.7 で導入された新しい fetchLicenseInfoWithCompletion() API を使用しています。バージョン 100.6 以前では AGSPortal.portalInfo.licenseInfo を使用します。
ライセンス情報をローカルストレージに保存した場合、保存したライセンス情報を使用して、オフライン環境でアプリを起動してライセンスを取得できます。ストレージからライセンスを取得し、アプリのライセンスを取得します。
// キーチェーンを取得します
let keychainItem = AGSKeychainItem(identifier: "com.your_org.your_app_name", accessGroup: nil, acrossDevices: false)
// キーチェーンからライセンスの JSON を取得します
let licenseDictionary = keychainItem.readObjectFromKeychain() as? NSDictionary
// JSON からライセンス情報を作成します
let licenseInfo = try! AGSLicenseInfo.fromJSON(licenseDictionary!) as? AGSLicenseInfo
// ライセンス情報を使用してアプリのライセンスを設定します
AGSArcGISRuntimeEnvironment.setLicenseInfo(licenseInfo!, error: errorPointer)