相关教程

记录文件路径: /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)