记录文件路径: /var/mobile/AMG/
-- AMG脚本例子 本例子仅供参考,实际运行时请根据实际情况自行调整 此处以触动精灵为例
require "TSLib"
local sz = require("sz");
local http = require("szocket.http");
if isFileExist(userPath().."/plugin/ts.so") == false then --未下载 ts.so插件
dialog("未下载 ts.so插件,进入触动,点击右下角更多,在“插件”菜单里下载官方插件ts.so", 0)
lua_exit()
end
local ts = require("ts")
local plist = ts.plist
---------------------------------------将此段放开头-----------------------------------------
--检查AMG是否在前台
function Check_AMG()
if isFrontApp("com.superdev.AMG") == 0 then
runApp("com.superdev.AMG")
mSleep(3000)
end
end
--检查执行结果
function Check_AMG_Result()
::get_amg_result::
mSleep(3000) --根据所选应用数量和备份文件大小来增加等待时间,如果有开智能飞行模式,建议时间在15秒以上,当然,运行脚本时不建议开智能飞行,直接用脚本判断IP更准确
local result_file = "/var/mobile/amgResult.txt"
if isFileExist(result_file) then
local amg_result = readFileString(result_file)
if amg_result == "0" then
return false
elseif amg_result == "1" then
return true
elseif amg_result == "2" then
toast("执行中",1)
goto get_amg_result
end
end
end
local AMG = {
Original = (function() --原始机器
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=originRecord")
if code == 200 then
return Check_AMG_Result()
end
end),
New = (function() --一键新机
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=newRecord")
if code == 200 then
return Check_AMG_Result()
end
end),
Get_Name = (function() --获取当前记录名称
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=getCurrentRecordName")
if code == 200 then
if Check_AMG_Result() == true then
return res
end
end
end),
Next = (function() --下一条
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=nextRecord");
if code == 200 then
return Check_AMG_Result()
end
end),
First = (function() --还原第一条记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=firstRecord");
if code == 200 then
return Check_AMG_Result()
end
end),
Get_Param = (function() --获取当前记录参数并保存到指定文件夹
Check_AMG()
local param_file = userPath().."/lua/AMG_Param.plist" --此处可自行修改保存路径和文件名
if isFileExist(param_file) then delFile(param_file) end
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=getCurrentRecordParam&saveFilePath="..param_file);
if code == 200 then
if Check_AMG_Result() == true then
return param_file
end
end
end),
Set_Param = (function(param_file) --设置当前记录参数
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=setCurrentRecordParam&filePath="..param_file);
if code == 200 then
return Check_AMG_Result()
end
end),
Get_Spec_Param = (function(record_name) --获取指定记录参数并保存到指定文件夹
Check_AMG()
local param_file = userPath().."/lua/AMG_Param.plist" --此处可自行修改保存路径和文件名
if isFileExist(param_file) then delFile(param_file) end
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=getRecordParam&recordName="..record_name.."&saveFilePath="..param_file);
if code == 200 then
if Check_AMG_Result() == true then
return param_file
end
end
end),
Set_Spec_Param = (function(record_name,param_file) --设置指定记录参数
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=setRecordParam&recordName="..record_name.."&filePath="..param_file);
if code == 200 then
return Check_AMG_Result()
end
end),
Get_All_Record = (function() --获取所有记录名称并写入指定文件
Check_AMG()
local all_record_file = userPath().."/lua/AMG_All_Record.plist" --此处可自行修改保存路径和文件名
if isFileExist(all_record_file) then delFile(all_record_file) end
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=getAllRecordNames&saveFilePath="..all_record_file);
if code == 200 then
if Check_AMG_Result() == true then
return all_record_file
end
end
end),
Recover = (function(record_name) --还原指定记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=setRecord&recordName="..record_name);
if code == 200 then
return Check_AMG_Result()
end
end),
Rename = (function(old_name,new_name) --重命名
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=setRecordName&oldName="..old_name.."&newName="..new_name);
if code == 200 then
return Check_AMG_Result()
end
end),
Delete = (function(record_name) --删除指定记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=deleteRecord&recordName="..record_name);
if code == 200 then
return Check_AMG_Result()
end
end),
Delete_All = (function() --删除所有记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=deleteAllRecords");
if code == 200 then
return Check_AMG_Result()
end
end),
Disable = (function(record_name) --禁用指定记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=disableRecord&recordName="..record_name);
if code == 200 then
return Check_AMG_Result()
end
end),
Enable = (function(record_name) --启用指定记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=enableRecord&recordName="..record_name);
if code == 200 then
return Check_AMG_Result()
end
end),
Disable_All = (function() --禁用所有记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=disableAllRecord");
if code == 200 then
return Check_AMG_Result()
end
end),
Enable_All = (function() --启用所有记录
Check_AMG()
local res, code = http.request("http://127.0.0.1:8080/cmd?fun=enableAllRecord");
if code == 200 then
return Check_AMG_Result()
end
end)
}
---------------------------------------将此段放开头-----------------------------------------
--以下为脚本运行示例
if AMG.Original() == true then
toast("原始机器", 3)
end
--一键新机
if AMG.New() == true then
toast("一键新机", 3)
end
--还原第一条记录
if AMG.First() == true then
toast("还原第一条记录", 3)
end
--还原指定记录
local record_name = "A10086" --可以通过多种方式获取指定记录,此记录必须存在
if AMG.Recover(record_name) == true then
toast("已切换至"..record_name.."记录", 3)
end
--下一条
if AMG.Next() == true then
toast("下一条", 3)
end
--获取当前记录名
local record_name = AMG.Get_Name()
if record_name then
toast("当前记录名称:"..record_name, 3)
end
--重命名当前记录名
local old_name = AMG.Get_Name()
local new_name = "A1001"
if AMG.Rename(old_name,new_name) == true then
toast("重命名当前记录 "..old_name.." 为 "..new_name, 3)
end
--重命名指定记录
local old_name = "2018-11-11-11-11-11-11" --可以通过多种方式获取指定记录,此记录必须存在
local new_name = "A10010"
if AMG.Rename(old_name,new_name) == true then
toast("重命名 "..old_name.." 为 "..new_name, 3)
end
--下一条并检查是否最后一条
if AMG.Next() == true then
if AMG.Get_Name() == "原始机器" then
toast("最后一条", 3)
end
end
--获取所有记录名
local all_record_file = AMG.Get_All_Record()
if all_record_file then
toast("已获取所有记录名称并保存到"..all_record_file, 3)
end
--删除指定记录
local record_name = "2018-11-11-11-11-11-11" --可以通过多种方式获取指定记录,此记录必须存在
if AMG.Delete(record_name) == true then
toast("已删除"..record_name.."记录", 3)
end
--删除所有记录 不删除当前记录
if AMG.Delete_All() == true then
toast("删除所有记录,保留当前记录", 3)
end
--原始机器后删除所有记录
if AMG.Original() == true then
if AMG.Delete_All() == true then
toast("删除所有记录", 3)
end
end
--获取当前记录参数保存到触动脚本文件夹 返回的是文件路径
local param_file = AMG.Get_Param()
if param_file then
toast("获取成功,参数文件路径:"..param_file, 3)
mSleep(3000)
local amg_param = plist.read(param_file)
local devicetoken = amg_param["DeviceToken"] --读取DeviceToken参数
if devicetoken then toast("获取当前记录devicetoken = "..devicetoken, 3) end --打印devicetoken
end
--设置当前记录参数 传入文件路径
local param_file = AMG.Get_Param() --先获取当前记录参数
if param_file then
--toast("获取成功,参数文件路径:"..param_file, 3)
local amg_param = plist.read(param_file)
local param_name = "DeviceToken"
local param_value = "12345678900000000"
amg_param[param_name] = param_value
plist.write(param_file,amg_param) --写入参数
if AMG.Set_Param(param_file) == true then
toast("设置当前记录参数"..param_name.."值为"..param_value,3)
end
end
--设置当前记录GPS
local lon = "121.4997661114"
local lat = "31.2394855667"
local param_file = AMG.Get_Param() --先获取当前记录参数
if param_file then
--toast("获取成功,参数文件路径:"..param_file, 3)
local amg_param = plist.read(param_file)
amg_param["Longitude"] = lon
amg_param["Latitude"] = lat
plist.write(param_file,amg_param) --写入参数
if AMG.Set_Param(param_file) == true then
toast("设置当前记录GPS位置为".."经度:"..lon.."纬度:"..lat,3)
end
end
--获取指定记录参数保存到触动脚本文件夹 返回的是文件路径
local record_name = "2018-11-11-11-11-11-11" --可以通过多种方式获取指定记录,此记录必须存在
local param_file = AMG.Get_Spec_Param(record_name)
if param_file then
toast("获取成功,参数文件路径:"..param_file, 3)
local amg_param = plist.read(param_file)
local devicetoken = amg_param["DeviceToken"] --读取DeviceToken参数
if devicetoken then toast("获取"..record_name.."记录 devicetoken = "..devicetoken, 3) end --打印devicetoken
end
--设置指定记录参数 传入记录名、文件路径
local record_name = "2018-11-11-11-11-11-11" --可以通过多种方式获取指定记录,此记录必须存在
local param_file = AMG.Get_Spec_Param(record_name) --先获取指定记录参数
if param_file then
--toast("获取成功,参数文件路径:"..param_file, 3)
local amg_param = plist.read(param_file)
local param_name = "DeviceToken"
local param_value = "12345678900000000"
amg_param[param_name] = param_value
plist.write(param_file,amg_param) --写入参数
if AMG.Set_Spec_Param(record_name,param_file) == true then
toast("设置"..record_name.."记录参数"..param_name.."值为"..param_value,3)
end
end
--禁用指定记录
if AMG.Disable(record_name) == true then
toast("已禁用"..record_name.."记录", 3)
end
--启用指定记录
if AMG.Enable(record_name) == true then
toast("已启用"..record_name.."记录", 3)
end
--禁用所有记录
if AMG.Disable_All() == true then
toast("已禁用所有记录", 3)
end
--启用所有记录
if AMG.Enable_All() == true then
toast("已启用所有记录", 3)
end
--设置机型版本
--设置开关
function Set_AMG_Config(key,valus)
local config_file = "/private/var/mobile/Library/Preferences/AMG/config.plist"
local amg_config = plist.read(config_file)
amg_config[key] = valus
plist.write(config_file,amg_config)
end
--设置当前设备机型
function Set_Device_Model(iphone_model)
if iphone_model ~= nil then
Set_AMG_Config("fakeDeviceModel","1")
else
Set_AMG_Config("fakeDeviceModel","0")
end
local param_file = AMG.Get_Param() --先获取当前记录参数
if param_file then
local amg_param = plist.read(param_file)
local param_name = "Model"
local param_value = "nil"
if iphone_model ~= nil then
param_value = iphone_model
end
amg_param[param_name] = iphone_model
plist.write(param_file,amg_param) --写入参数
if AMG.Set_Param(param_file) == true then
toast("设置当前记录参数"..param_name.."值为"..param_value,3)
end
end
end
--设置当前系统版本
function Set_SyetemVer(ios_ver)
if ios_ver ~= nil then
Set_AMG_Config("fakeSystemVer","1")
else
Set_AMG_Config("fakeSystemVer","0")
end
local param_file = AMG.Get_Param() --先获取当前记录参数
if param_file then
local amg_param = plist.read(param_file)
local param_name = "SystemVer"
local param_value = "nil"
if ios_ver ~= nil then
param_value = ios_ver
end
amg_param[param_name] = ios_ver
plist.write(param_file,amg_param) --写入参数
if AMG.Set_Param(param_file) == true then
toast("设置当前记录参数"..param_name.."值为"..param_value,3)
end
end
end
--例:
--设置当前机型为iPhone X
local iphone_model = "iPhone X"
local ios_ver = "12.1.2"
--还原当前机型
local iphone_model = nil
local ios_ver = nil
Set_Device_Model(iphone_model)
Set_SyetemVer(ios_ver)