美文网首页
微信云控系统通讯录拉群的实现原理,及其核心代码

微信云控系统通讯录拉群的实现原理,及其核心代码

作者: TD337788 | 来源:发表于2020-02-03 21:23 被阅读0次

    微信云控系统,其概念是相对于微信群控系统的。微信群控系统是通过usb线传输数据控制手机进行模拟操作的,而微信云控系统则是通过网络传输数据操作手机端。也就是从服务器下发命令到手机上,手机端执行各种模拟操作。

    微信云控系统主要用到的技术有服务器推送技术,客户端接收数据,并执行模拟点击操作。服务器推送在这里我们主要用到的是推送透传,大家可以采取自建推送平台,这个就比较麻烦,要根据协议来写。还有就是使用现在已经非常成熟的第三方服务,有个推,极光,百度等等。大家可以去了解下。客户端接收到服务器端传送的命令后,触发相应的操作。客户端的模拟点击实现,在这里我们使用的是uiautomator,可模拟各种点击,输入等操作。

    如果还需要虚拟定位,一键换机等操作,则需要用到Android的劫持工具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(3600121000);//离线时间

    message−>setdata( message->set_data(message−>set

    d

    ata(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( igt->pushMessageToSingle(igt−>pushMessageToSingle(message, $target);

    var_dump($rep);

    echo ("

    ")

    }catch(RequestException $e){

    $requstId =e.getRequestId();

    $rep = igt−>pushMessageToSingle( igt->pushMessageToSingle(igt−>pushMessageToSingle(message, target, target,target,requstId);

    var_dump($rep);

    echo ("

    ");

    }

    }

    //多推接口案例

    public function pushMessageToList(idsArr, idsArr,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( this->IGtTransmissionTemplateDemo(this−>IGtTransmissionTemplateDemo(cmd);

    //个推信息体

    $message = new \IGtListMessage();

    $message->set_isOffline(true);//是否离线

    $message->set_offlineExpireTime(3600 * 12 * 1000);//离线时间

    message−>setdata( message->set_data(message−>set

    d

    ata(template);//设置推送消息类型

    // $message->set_PushNetWorkType(1); //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送

    // $contentId = igt−>getContentId( igt->getContentId(igt−>getContentId(message);

    $contentId = igt−>getContentId( igt->getContentId(igt−>getContentId(message,“toList任务别名功能”);//根据TaskId设置组名,支持下划线,中文,英文,数字

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

    $target = new \IGtTarget();

    $target->set_appId(APPID);

    target−>setclientId( target->set_clientId(target−>set

    c

    lientId(v);

    // $target1->set_alias(Alias);

    targetList[ targetList[targetList[k] = $target;

    }

    //接收方1

    $rep = igt−>pushMessageToList( igt->pushMessageToList(igt−>pushMessageToList(contentId, $targetList);

    return $rep;

    // var_dump($rep);

    // echo ("

    ");

    }

    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);

    ————————————————

    版权声明:本文为CSDN博主「VQ103731240」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/VQ103731240/article/details/103892204

    相关文章

      网友评论

          本文标题:微信云控系统通讯录拉群的实现原理,及其核心代码

          本文链接:https://www.haomeiwen.com/subject/ctpbyqtx.html