1. 程式人生 > >自開發微信雲控系統源碼,可二次開發

自開發微信雲控系統源碼,可二次開發

etl usb ted lse net [] message 比較 所有

微信雲控系統是微信群控的升級版。微信群控系統是通過usb線傳輸數據控制手機進行模擬操作的,而微信雲控系統則是通過網絡傳輸數據操作手機端。也就是從服務器下發命令到手機上,手機端執行各種模擬操作。 微信雲控系統主要用到的技術有服務器推送技術、客戶端接收數據、模擬點擊 滑動操作。服務器推送在這裏我們主要用到的是推送透傳,大家可以采取自建推送平臺,這個就比較麻煩,要根據協議來寫。還有就是使用現在已經非常成熟的第三方服務例如:個推、極光、百度等等。大家可以去了解下。客戶端接收到服務器端傳送的命令後,觸發相應的操作。客戶端的模擬點擊實現,在這裏我們使用的是uiautomator,可模擬各種點擊,滑動、輸入等操作。 如果還需要虛擬定位,一鍵換機等操作,則需要用到Android的劫持工具xposed。這是個功能很強大的第三方工具,可以劫持任何你想改變的數據。不過現在微信針對xposed,進行封號。 微信雲控系統實現的關鍵是服務器端的推送,在我們的雲控系統中主要是借助第三方推送服務,我們使用的是個推。 服務器端核心推送源碼為: //

//服務端推送接口,支持三個接口推送
//1.PushMessageToSingle接口:支持對單個用戶進行推送
//2.PushMessageToList接口:支持對多個用戶進行推送,建議為50個用戶
//3.pushMessageToApp接口:對單個應用下的所有用戶進行推送,可根據省份,標簽,機型過濾推送
//

//單推接口案例
public function pushMessageToSingle(){
//var_dump(‘./‘.ROOT . ‘touchuan/‘ . ‘IGt.Push.php‘);exit();
//require_once(‘./‘.ROOT . ‘touchuan/‘ . ‘IGt.Push.php‘);
//$igt = new \IGeTui(HOST,APPKEY,MASTERSECRET);

$igt = new \IGeTui(NULL,APPKEY,MASTERSECRET,false);

//消息模版:
// 1.TransmissionTemplate:透傳功能模板
// 2.LinkTemplate:通知打開鏈接功能模板
// 3.NotificationTemplate:通知透傳功能模板
// 4.NotyPopLoadTemplate:通知彈框下載功能模板

// $template = IGtNotyPopLoadTemplateDemo();
// $template = IGtLinkTemplateDemo();
// $template = IGtNotificationTemplateDemo();

$template = $this->IGtTransmissionTemplateDemo();

//個推信息體
$message = new \IGtSingleMessage();

$message->set_isOffline(true);//是否離線
$message->set_offlineExpireTime(3600*12*1000);//離線時間
$message->set_data($template);//設置推送消息類型

// $message->set_PushNetWorkType(0);//設置是否根據WIFI推送消息,1為wifi推送,0為不限制推送
//接收方
$target = new \IGtTarget();
$target->set_appId(APPID);
$target->set_clientId(CID);
// $target->set_alias(Alias);

try {

    $rep = $igt->pushMessageToSingle($message, $target);
    var_dump($rep);
    echo ("<br><br>");

}catch(RequestException $e){
    $requstId =e.getRequestId();
    $rep = $igt->pushMessageToSingle($message, $target,$requstId);
    var_dump($rep);
    echo ("<br><br>");
}

}

//多推接口案例
public function pushMessageToList($idsArr,$cmd)
{
putenv("gexin_pushList_needDetails=true");
putenv("gexin_pushList_needAsync=true");

$igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
//消息模版:
// 1.TransmissionTemplate:透傳功能模板
// 2.LinkTemplate:通知打開鏈接功能模板
// 3.NotificationTemplate:通知透傳功能模板
// 4.NotyPopLoadTemplate:通知彈框下載功能模板

// var_dump("ssssssssssss");
//$template = IGtNotyPopLoadTemplateDemo();
//$template = IGtLinkTemplateDemo();
//$template = IGtNotificationTemplateDemo();
$template = $this->IGtTransmissionTemplateDemo($cmd);
//個推信息體
$message = new \IGtListMessage();
$message->set_isOffline(true);//是否離線
$message->set_offlineExpireTime(3600 * 12 * 1000);//離線時間
$message->set_data($template);//設置推送消息類型

// $message->set_PushNetWorkType(1); //設置是否根據WIFI推送消息,1為wifi推送,0為不限制推送
// $contentId = $igt->getContentId($message);
$contentId = $igt->getContentId($message,"toList任務別名功能");//根據TaskId設置組名,支持下劃線,中文,英文,數字

 foreach ($idsArr as $k=>$v) {

$target = new \IGtTarget();
$target->set_appId(APPID);
$target->set_clientId($v);
// $target1->set_alias(Alias);
$targetList[$k] = $target;
}
//接收方1
$rep = $igt->pushMessageToList($contentId, $targetList);
return $rep;
// var_dump($rep);

// echo ("<br><br>");

}

 Android端接收數據執行命令核心源碼為:

@Override
public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
String appid = msg.getAppid();
String taskid = msg.getTaskId();
String messageid = msg.getMessageId();
byte[] payload = msg.getPayload();
String pkg = msg.getPkgName();
String cid = msg.getClientId();

// 第三方回執調用接口,actionid範圍為90000-90999,可根據業務場景執行
boolean result = PushManager.getInstance().sendFeedbackMessage(context, taskid, messageid, 90001);
Log.d(TAG, "call sendFeedbackMessage = " + (result ? "success" : "failed"));

Log.d(TAG, "onReceiveMessageData -> " + "appid = " + appid + "\ntaskid = " + taskid + "\nmessageid = " + messageid + "\npkg = " + pkg
        + "\ncid = " + cid);
if (payload == null) {
    Log.e(TAG, "receiver payload = null");
} else {
     data = new String(payload);
    Log.d(TAG, "receiver payload = " + data);
  在Android端接收到數據後,進行相應的命令自動化操作,

自開發微信雲控系統源碼,可二次開發