正式许可服务行业用户、测绘用户、大众用户,使用前,请先购买SuperMap GIS 产品许可,购买方式如下:
(1). 联系超图软件销售人员或致电超图公司,电话:+86-10-59896655。
(2). 超图官网购买在线许可时长,购买地址:https://www.supermapol.com/subscription/time-license/mobile。
公有云许可
公有云许可使用SuperMap Online账号,无需在本地部署相关许可服务。使用SuperMap iMobile公有云许可,需要满足以下几点需求:
(1). 移动设备能连接网络,且网络稳定;
(2). 拥有SuperMap Online账号。前往超图官网注册SuperMap Online账号,已有账号可跳过此步;
(3). SuperMap Online账号下有能使用的SuperMap iMobile许可。
公有云许可代码步骤如下:
第一步:设置许可路径(可选)
若设备本地默认许可路径下有离线许可,需设置许可路径,否则默认使用本地离线许可,不使用公有云许可。
Environment.setLicensePath(RoothPath + "/SuperMap/License1/");//
第二步:初始化,获取对象
CloudLicenseManager manager = CloudLicenseManager.getInstance(this);
第三步:设置公有云回调
manager.setLoginCallback(new CloudLicenseManager.LicenseLoginCallback() {
@Override
public void loginAccount(boolean issuccess) {//登录回调,true为登录成功
if (issuccess) {
Log.i(TAG, "loginAccount: 登录成功");
showMsg("登录成功");
}
}
@Override
public void logoutAccount(boolean logout) {//退出登录回调,true为退出成功
if (logout) {
Log.i(TAG, "退出成功");
showMsg("退出成功");
}
}
@Override
public void queryLicense(CloudLicenses licenses) {//查询许可回调
cloudLicenses = licenses;
if (licenses != null) {
Log.i(TAG, "查询成功");
showMsg("查询成功");
} else {
showMsg("许可为空");
}
}
@Override
public void activeLicense(boolean activeSuccess) {//激活许可回调
if (activeSuccess) {
Log.i(TAG, "激活成功");
showMsg("激活成功");
} else {
showMsg("激活失败");
}
}
@Override
public void recycleLicense(boolean days) {//归还许可回调,归还失败返回-1
recycle = days;
}
@Override
public void otherError(String error) {//错误信息回调
Log.e(TAG, error);
}
});
第四步:登录SuperMap Online账号
manager.login("username","password");
第五步:查询许可
查询许可为激活许可做准备,这一步不能过滤掉。
manager.queryLicense();
(1). 一个账号下,如有多个许可,这里会将每一个都查询出来;
(2). 区别是否已经激活过的许可,看LicenseInfo.lockMacAddr是否为空,如果激活,这里就是绑定的mac地址。
第六步:激活许可
manager.activateLicense(cloudLicenses.getLicenses().get(0));;
(1). 公有云许可时间粒度为1天,该许可当天内只要激活,便只会扣除一天时间,后面不管多少台设备使用,都不再扣除许可(前提是归还后,下一台设备才能使用);
(2). 一个账号下有多个许可,这些许可都是独立存在的单元,所以可以出现一个设备把所有许可都给激活掉;
(3). 由于云许可激活序列号是存在内存中,当应用退出后,需要重新登录、查询、激活;
(4). 另一个设备想要使用该序列号,只有将该许可归还后在使用;
(5). 每次重新登录激活都会产生一个新的returnID,请使用最新的ID进行后续操作。
第七步:归还云许可
manager.recycleLicense(cloudLicenses.getLicenses().get(0));
断网2小时或退出应用,许可也将被动回收。归还和回收后的许可允许再分配。
第八步:退出云许可
manager.logout();
公有云无账号归还许可
公有云无账号归还许可,是公有云许可的补充,适合无法保证网络稳定的应用场景。使用前,请确保已经购买许可并获得激活序列号。
配置公有云无账号归还许可的一般顺序为:
(1). 初始化许可管理器;
(2). 设置许可激活回调;
(3). 设置许可类型(注意:须先设置许可类型再初始化环境);
(4). 环境初始化;
(5). 传入用户序列号和需要申请许可的模块列表,在线激活设备;
(6). 设备激活成功后,重启程序。
通过查询传入功能模块的方式配置在线许可范例代码如下:
ArrayList<Module> modules = new ArrayList<Module>();
private void active() {
//用户序列号
String userSerialID = "用户序列号";
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//设置许可激活回调
manager.setActivateCallback(new RecycleLicenseCallback() {
@Override
public void upgradeFailed(String errorInfo) {
}
@Override
public void success(LicenseStatus newLicStatus) {
}
@Override
public void recycleLicenseFailed(String errorInfo) {
}
@Override
public void bindPhoneNumberFailed(String errorInfo) {
}
@Override
public void activateFailed(String errorInfo) {
}
@Override
public void queryResult(ArrayList<Module> arrModules) {
modules = arrModules;
//在线激活设备,传入用户序列号和需要申请的模块列表
manager.activateDevice(userSerialID, modules);
}
@Override
public void otherErrors(String errorInfo) {
}
});
//设置许可类型(注意:先设置许可类型,再初始化环境)
Environment.setLicenseType(LicenseType.UUID);
Environment.initialization(getApplicationContext());
//查询许可中包含的模块
manager.query(userSerialID);
//使用查询到的模块激活,需要在查询结束后调用激活方法,分两步执行,此处直接将其放置在查询回调中执行。
}
通过直接添加模块的方式配置在线许可范例代码如下:
private void active() {
//用户序列号
String userSerialID = "用户序列号";
//设置申请许可的模块
final ArrayList<Module> modules = new ArrayList<Module>();
modules.add(Module.Core_Runtime);
modules.add(Module.Navigation_Runtime);
modules.add(Module.Realspace_Runtime);
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//设置许可激活回调
manager.setActivateCallback(new RecycleLicenseCallback() {
@Override
public void upgradeFailed(String errorInfo) {
}
@Override
public void success(LicenseStatus newLicStatus) {
}
@Override
public void recycleLicenseFailed(String errorInfo) {
}
@Override
public void bindPhoneNumberFailed(String errorInfo) {
}
@Override
public void activateFailed(String errorInfo) {
}
@Override
public void queryResult(ArrayList<Module> arrModules) {
}
@Override
public void otherErrors(String errorInfo) {
}
});
//设置许可类型(注意:先设置许可类型,再初始化环境)
Environment.setLicenseType(LicenseType.UUID);
Environment.initialization(getApplicationContext());
//在线激活设备,传入用户序列号和需要申请的模块列表
manager.activateDevice(userSerialID, modules);
}
备份许可
通过绑定手机号的方式对许可进行备份。许可备份成功后,一旦设备遗失或报废,可在其它设备上通过归还接口对许可进行归还,归还后的许可支持再分配。
建议为每个硬件备份一个手机号,便于设备不可用时收回再分配。
private void bind() {
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//传入手机号,绑定许可
manager.bindPhoneNumber(mPhoneNumber);
}
(1). 一个手机号只能备份一个许可。
(2). 许可激活后方可进行备份操作。
归还许可
本设备主动归还许可,传入本机备份过的手机号或者没有备份手机号,传入空参数,系统自动获取设备UUID,用于归还。
本设备遗失或报废,已备份手机号的,通过其它设备传入该手机号进行归还。
本设备遗失或报废,没有备份手机号的,则无法归还许可,许可始终被占用。
许可归还后才能再分配,建议激活许可时,备份手机号。
private void recycle() {
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//传入手机号,回收许可
manager.recycleLicense(mPhoneNumber);
}
许可激活后方可进行归还操作。
在SuperMap Online的“许可管理-移动产品许可”下,绑定序列号,即可查看该序列号下激活的设备。
![]() |
图:绑定序列号 |
私有云许可
私有云许可需要本地搭建一个局域网服务,设备和服务都处于同一IP段下,使用过程中,保持许可服务一直在线。在线私有云许可使用步骤如下:
第一步:搭建私有云许可服务
超图官网下载“许可中心(Web版)”,下载地址:http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx。
![](../../Universal/img/icon-tips.png)
不同的SuperMap iMobile版本,需使用不同版本的Web许可中心。
- SuperMap iMobile 11i(2024),即v12.0版,搭配Web许可中心v3.0.28。
- SuperMap iMobile 11i(2023),即v11.0版,搭配Web许可中心v3.0.9。
![]() |
图:下载许可中心(Web版) |
下载完成后,选择对应的版本,这里以Windows版为例。
![]() |
图:解压许可中心,选择合适版本 |
解压许可中心,运行“bin”文件夹中的“Start.bat”文件。
![]() |
图:运行许可中心 |
浏览器中输入“localhost:9183”,创建账户。已有账户可直接登录。
![]() |
图:注册和登录许可中心 |
第二步:许可中心中激活更新
登录后,进入“激活更新”页面,点击“下载报告”得到名为“*.reportc”的文件。将“*.reportc"文件提交给北京超图软件股份有限公司,我们将根据您的需求生成“*.licc”正式许可文件并返回给您,收到后请妥善保管;
在“激活更新”页面,点击“选择(*.licc)文件”,并选中上述返回的许可文件“*.licc”;点击“导入许可”,成功导入后会得到“导入许可成功”提示。
![]() |
图:激活许可 |
第三步:程序代码中激活
初始化私有云许可,设置私有云许可地址。
PrivateCloudLicenseManager.getInstance().setServerUrl(URL);//URL为私有云服务地址
查询云许可。
PrivateCloudLicenseManager.getInstance().queryFormalLicense(new PrivateCloudLicenseManager.privateLicQueryCallback() {
@Override
public void onQueryComplete(Vector<PrivateCloudLicenseManager.privateCloudLicInfo> vectors) {
}
});
获取所有模块信息,将需要激活的模块的ID保存,用于激活。
激活许可。
boolean active= PrivateCloudLicenseManager.getInstance().ApplyFormalLicense(activecount);
激活成功为true,失败为false。
私有云是属于长连接,一旦网络断开,或者App杀掉,许可自动回收,所以不存在回收操作。
离线许可
离线许可,根据移动设备序列号,生成许可文件,并将许可文件拷贝到移动设备中的对应位置,无需联网,即可激活。
第一步:获取设备硬件码
有两种方式获得设备的硬件识别码。
第一种:通过Evironment类的接口获取目标设备的硬件识别码。
Environment.getDeviceID();
第二种:通过定制应用直接获得设备的硬件识别码。
在超图软件技术资源中心下载获取设备硬件识别码的工程代码和apk,地址为:http://support.supermap.com.cn/product/CodeLibrary.aspx?PRODUCT_TYPE=4#pro_name。网盘地址为:https://pan.baidu.com/share/init?surl=c1YaoPM,提取码:f71j。
![]() |
图:下载定制应用,获取申请许可设备ID号 |
第二步:获得激活文件
用获得的硬件识别码通过销售渠道获取产品的许可激活文件。
第三步:拷贝许可文件至移动设备
将许可文件拷贝到对应的移动设备中,默认许可路径为“/SuperMap/license”。
在应用程序初始化的代码中通过 Environment 类显式设置许可文件存放的路径,将许可激活文件存放至该指定路径下。
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
Environment.setLicensePath(rootPath + "/SuperMap/license/");//设置许可文件路径