SuperMap iMobile for Android许可介绍
作者:dongyx
使用SuperMap iMobile产品需要SuperMap的授权,即获得许可。目前,针对不同的用户和不同的使用场景,SuperMap iMobile提供三种许可方式,分别为试用许可、正式许可、教育许可。
一、试用许可
想必有很多同学在使用初期都是使用的试用许可,那么试用许可具有哪些特点呢?
1.许可免费,可以直接使用邮箱申请,但是试用期为3个月;并且功能无限制
2.地图上含有超图水印;
3.试用许可不需要绑定设备,一个许可文件可以用在多个设备上。
使用方法:
将申请后的*.slm许可文件拷贝至设备中,然后调用
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
Environment.setLicensePath(rootPath + "/SuperMap/license/")
二、正式许可
在正式项目的开发中很多客户都是需要购买正式许可的,但是并不知道需要购买哪种正式许可,下面小编带大家了解iMobile产品的正式许可使用场景以及使用方法。
1.文件型正式许可:该许可主要适用于设备不能联网的情况下使用,一个许可文件对应一个设备。
使用方法:
通过 Evironment 类的接口获取目标设备的硬件识别码(也可以通过定制应用直接获得设备的硬件识别码)
Environment.getDeviceID();
用获得的硬件识别码通过销售渠道获取许可激活文件,将文件拷贝至设备中,然后调用以下代码:
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
Environment.setLicensePath(rootPath + "/SuperMap/license/")
2.在线激活许可
该许可在第一次激活时设备需要联网,激活后可一直使用。并且该许可是可归还的,在使用后都可以进行归还,然后其他设备进行激活使用
使用方法:
通过查询序列号获取功能模块进行激活:
ArrayList<Module> modules = new ArrayList<Module>();private void active() {//用户序列号String userSerialID = "用户序列号"; RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());//设置许可激活回调manager.setActivateCallback(new RecycleLicenseCallback() { @Overridepublic void upgradeFailed(String errorInfo) {}@Overridepublic void success(LicenseStatus newLicStatus) {}@Overridepublic void recycleLicenseFailed(String errorInfo) {}@Overridepublic void bindPhoneNumberFailed(String errorInfo) {}@Overridepublic void activateFailed(String errorInfo) {}@Overridepublic void queryResult(ArrayList<Module> arrModules) {modules = arrModules;//在线激活设备,传入用户序列号和需要申请的模块列表manager.activateDevice(userSerialID, modules);}@Overridepublic 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() {@Overridepublic void upgradeFailed(String errorInfo) {}@Overridepublic void success(LicenseStatus newLicStatus) {}@Overridepublic void recycleLicenseFailed(String errorInfo) {}@Overridepublic void bindPhoneNumberFailed(String errorInfo) {}@Overridepublic void activateFailed(String errorInfo) {}@Overridepublic void queryResult(ArrayList<Module> arrModules) {}@Overridepublic void otherErrors(String errorInfo) {}});//设置许可类型(注意:先设置许可类型,再初始化环境)Environment.setLicenseType(LicenseType.UUID);Environment.initialization(getApplicationContext());//在线激活设备,传入用户序列号和需要申请的模块列表manager.activateDevice(userSerialID, modules);
}
3.在线公有云许可
在线公有云许可对接的是SuperMap Online账号,不需要在本地部署相关服务。使用在线公有云许可需要满足设备联网、拥有SuperMap Online账号并且账号中有iMobile许可。
使用方法:
初始化公有云对象:
3.CloudLicenseManager manager = CloudLicenseManager.getInstance(this);
manager. setLoginCallback(new CloudLicenseManager.LicenseLoginCallback(){@Overridepublic void loginAccount(boolean issuccess) {}@Overridepublic void queryLicense(QueryFormalLicenseResponse queryFormalLicenseResponse) {}@Overridepublic void activeLicense(String returnid) {}@Overridepublic void recycleLicense(int days) {}@Overridepublic void otherError(String error) {}@Overridepublic void logoutAccount(boolean logout) {}
manager.login("username","password");
查询许可,查询成功后在queryLicense回调中拿到许可ID licenseID用于下一步激活:
@Override
public void queryLicense(QueryFormalLicenseResponse queryFormalLicenseResponse) {if (queryFormalLicenseResponse!=null){int licenseCount = queryFormalLicenseResponse.licenseCount;boolean formal = queryFormalLicenseResponse.formal;LicenseInfo[] licenseInfos = queryFormalLicenseResponse.licenses;licenseid = licenseInfos[0].id;}
}
激活许可
manager.applyFormal(licenseid);
4.教育版许可
教育版许可顾名思义是给教育单位提供的许可,该许可需要部署一个许可服务器,在使用时只需要通过许可服务器的url地址激活就可以。具体使用方法如下:
1.初始化教育许可类 :
eduLicense = EduLicense.getInstance(this);
2.设置教育许可监听:
eduLicense.setEduLicenseApplyListener(new EduLicense.EduLicenseApplyListener() {@Overridepublic void getApplySuccess(boolean isApplySuccess) {if (isApplySuccess){Log.i(TAG, "激活成功 ");}else {Log.i(TAG, "激活失败 ");}}});
3.设置许可服务网址 :
eduLicense.setUrl("URL");
4.激活许可 ;
eduLicense.applyLicense();
5.激活完成后,获取许可信息。
eduLicense.getLicenseInfos();
许可信息中包括:
许可激活信息,及激活成功或失败。
许可描述。
许可合同有效期。该有效期是许可服务上的许可合同到期时间。