作者: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() {
@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);
}
3.在线公有云许可
在线公有云许可对接的是SuperMap Online账号,不需要在本地部署相关服务。使用在线公有云许可需要满足设备联网、拥有SuperMap Online账号并且账号中有iMobile许可。
使用方法:
初始化公有云对象:
3.CloudLicenseManager manager = CloudLicenseManager.getInstance(this);
manager. setLoginCallback(new CloudLicenseManager.LicenseLoginCallback(){
@Override
public void loginAccount(boolean issuccess) {
}
@Override
public void queryLicense(QueryFormalLicenseResponse queryFormalLicenseResponse) {
}
@Override
public void activeLicense(String returnid) {
}
@Override
public void recycleLicense(int days) {
}
@Override
public void otherError(String error) {
}
@Override
public 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() {
@Override
public void getApplySuccess(boolean isApplySuccess) {
if (isApplySuccess){
Log.i(TAG, "激活成功 ");
}
else {
Log.i(TAG, "激活失败 ");
}
}
});
3.设置许可服务网址 :
eduLicense.setUrl("URL");
4.激活许可 ;
eduLicense.applyLicense();
5.激活完成后,获取许可信息。
eduLicense.getLicenseInfos();
许可信息中包括:
许可激活信息,及激活成功或失败。
许可描述。
许可合同有效期。该有效期是许可服务上的许可合同到期时间。