许可配置 |
您在进行许可配置之前,请确保已经获得由北京超图软件股份有限公司授权的许可。
a. 通过 Evironment 类的接口获取目标设备的硬件识别码:Environment.getDeviceID (可以通过定制应用直接获得设备的硬件识别码)。
b. 用获得的硬件识别码通过销售渠道获取产品的许可激活文件。
c. 在应用程序初始化的代码中通过 Environment 类显式设置许可文件存放的路径:Environment.setLicensePath(rootPath + "/SuperMap/license/") (可以根据需要替换代码中指定的路径)。
获取设备默认存储根目录String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
d. 将许可激活文件存放至该指定路径下。
a.初始化许可管理器;
b.设置许可激活回调;
c.设置许可类型(注意:须先设置许可类型再初始化环境);
d.环境初始化;
e. 传入用户序列号和需要申请许可的模块列表,在线激活设备;
f. 设备激活成功后,重启程序。
附注:通过查询传入功能模块的方式配置在线许可范例代码如下:
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) {
System.out.println("upgradeFailed.");
}
@Override
public void success(LicenseStatus newLicStatus) {
System.out.println("success.");
}
@Override
public void recycleLicenseFailed(String errorInfo) {
System.out.println("recycle License Failed.");
}
@Override
public void bindPhoneNumberFailed(String errorInfo) {
System.out.println("bind Phone Number Failed.");
}
@Override
public void activateFailed(String errorInfo) {
System.out.println("activate Failed.");
}
@Override
public void queryResult(ArrayList<Module> arrModules) {
modules = arrModules;
//在线激活设备,传入用户序列号和需要申请的模块列表
manager.activateDevice(userSerialID, modules);
}
@Override
public void otherErrors(String errorInfo) {
System.out.println("other errors Failed.");
System.out.println(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) {
System.out.println("upgradeFailed.");
}
@Override
public void success(LicenseStatus newLicStatus) {
System.out.println("success.");
}
@Override
public void recycleLicenseFailed(String errorInfo) {
System.out.println("recycle License Failed.");
}
@Override
public void bindPhoneNumberFailed(String errorInfo) {
System.out.println("bind Phone Number Failed.");
}
@Override
public void activateFailed(String errorInfo) {
System.out.println("activate Failed.");
}
@Override
public void queryResult(ArrayList<Module> arrModules) {
}
@Override
public void otherErrors(String errorInfo) {
System.out.println("other errors Failed.");
System.out.println(errorInfo);
}
});
//设置许可类型(注意:先设置许可类型,再初始化环境)
Environment.setLicenseType(LicenseType.UUID);
Environment.initialization(getApplicationContext());
//在线激活设备,传入用户序列号和需要申请的模块列表
manager.activateDevice(userSerialID, modules);
}
iMobile支持通过绑定手机号的方式对许可进行备份。许可成功备份后,一旦设备遗失或报废,可在其它设备上通过归还接口对许可进行归还,归还后的许可可重新进行分配。
注意:
1. 一个手机号只能备份一个许可
2. 许可激活后方可进行备份操作
附注:备份许可范例代码如下:
private void bind() {
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//传入手机号,绑定许可
manager.bindPhoneNumber(mPhoneNumber);
}
iMobile支持归还许可。已经通过绑定手机号备份过的许可,可通过传入手机号归还许可。没有备份的许可,参数为空也可进行许可归还。如果设备遗失或报废,可通过其他设备进行许可归还。
注意:许可激活后方可进行归还操作
附注:归还许可范例代码如下:
private void recycle() {
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//传入手机号,回收许可
manager.recycleLicense(mPhoneNumber);
}
低于9D版本的产品在进行产品升级时,需进行许可升级。
附注:升级许可范例代码如下:
private void upgrade() {
RecycleLicenseManager manager = RecycleLicenseManager.getInstance(getApplicationContext());
//分别传入原合同号和新合同号,升级许可
manager.upgrade(mUserSerialID, mUserSerialIDNew);
}