RCCommandHelp.m 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. //
  2. // RCCommandHelp.m
  3. // VclustersGemini
  4. //
  5. // Created by APPLE on 2019/11/7.
  6. // Copyright © 2019 APPLE. All rights reserved.
  7. //
  8. #import "RCCommandHelp.h"
  9. #import <objc/runtime.h>
  10. #import "AppDelegate.h"
  11. @implementation RCCommandHelp
  12. #define USENEWCONTROLLCOMMONDNO500 YES
  13. #pragma -mark- 设备控制指令拼接方式
  14. + (NSString *)commandAppending00StringWithSourStr:(NSString *)commondStr
  15. {
  16. NSString *resultStr = @"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
  17. resultStr = [resultStr substringToIndex:resultStr.length - commondStr.length];
  18. resultStr = [resultStr stringByAppendingString:commondStr];
  19. // KyoLog(@"\n %s = %lu",__func__,(unsigned long)resultStr.length);
  20. return resultStr;
  21. }
  22. + (NSString *)commandAppendingHeadAndEndStrWithSourStr:(NSString *)commondStr
  23. {
  24. NSString *resultStr = [@"#" stringByAppendingString:commondStr];
  25. resultStr = [resultStr stringByAppendingString:@"$"];
  26. // KyoLog(@"\n %s = %lu",__func__,(unsigned long)resultStr.length);
  27. return resultStr;
  28. }
  29. #pragma -mark- 新设备控制指令
  30. + (NSString *)mutTapCommand500DownWithTouches:(NSArray *)touches
  31. showImageView:(UIImageView *)showImageView
  32. isLan:(BOOL)isLan
  33. {
  34. /*比列换算*/
  35. // CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  36. // CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  37. // CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  38. // CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  39. CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  40. CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  41. NSString *pointList = @"";
  42. for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  43. {
  44. UITouch *touch = [touches objectAtIndex:nfori];
  45. CGPoint lastPoint = [touch locationInView:showImageView];
  46. /*换算后的坐标*/
  47. // CGFloat x = lastPoint.x*ratex;
  48. // CGFloat y = lastPoint.y*ratey;
  49. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  50. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  51. pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":%ld,\"x\":\"%f\",\"y\":\"%f\"}",(long)nfori,x,y]];
  52. }
  53. pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  54. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionDown\"}",pointList];
  55. if (USENEWCONTROLLCOMMONDNO500)
  56. {
  57. // dataStr = [CommondToStr commondAppendingHeadAndEndStrWithSourStr:dataStr];
  58. }
  59. else
  60. {
  61. dataStr = [RCCommandHelp commandAppending00StringWithSourStr:dataStr];
  62. }
  63. return dataStr;
  64. }
  65. + (NSString *)mutTapCommand500UpWithTouches:(NSArray *)touches
  66. showImageView:(UIImageView *)showImageView
  67. isLan:(BOOL)isLan
  68. {
  69. /*比列换算*/
  70. // CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  71. // CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  72. // CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  73. // CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  74. CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  75. CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  76. NSString *pointList = @"";
  77. for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  78. {
  79. UITouch *touch = [touches objectAtIndex:nfori];
  80. CGPoint lastPoint = [touch locationInView:showImageView];
  81. /*换算后的坐标*/
  82. // CGFloat x = lastPoint.x*ratex;
  83. // CGFloat y = lastPoint.y*ratey;
  84. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  85. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  86. pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":%ld,\"x\":\"%f\",\"y\":\"%f\"}",(long)nfori,x,y]];
  87. }
  88. pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  89. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionUp\"}",pointList];
  90. if (USENEWCONTROLLCOMMONDNO500)
  91. {
  92. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  93. }
  94. else
  95. {
  96. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  97. }
  98. return dataStr;
  99. }
  100. + (NSString *)mutMoveCommand500UpWithTouches:(NSArray *)touches
  101. showImageView:(UIImageView *)showImageView
  102. isLan:(BOOL)isLan
  103. {
  104. /*比列换算*/
  105. // CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  106. // CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  107. // CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  108. // CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  109. CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  110. CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  111. NSString *pointList = @"";
  112. for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  113. {
  114. UITouch *touch = [touches objectAtIndex:nfori];
  115. CGPoint lastPoint = [touch locationInView:showImageView];
  116. /*换算后的坐标*/
  117. // CGFloat x = lastPoint.x*ratex;
  118. // CGFloat y = lastPoint.y*ratey;
  119. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  120. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  121. pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":0,\"x\":\"%f\",\"y\":\"%f\"}",x,y]];
  122. }
  123. pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  124. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionMove\"}",pointList];
  125. if (USENEWCONTROLLCOMMONDNO500)
  126. {
  127. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  128. }
  129. else
  130. {
  131. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  132. }
  133. return dataStr;
  134. }
  135. + (NSString *)tapDownCommandTouches:(UITouch *)touch
  136. touchCount:(NSInteger)touchCount
  137. showImageView:(UIImageView *)showImageView
  138. isLan:(BOOL)isLan
  139. {
  140. int touchid = 0;
  141. if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  142. {
  143. touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  144. }
  145. else/*地址转int*/
  146. {
  147. NSString *ip = [NSString stringWithFormat:@"%p",touch];
  148. ip = [ip substringFromIndex:2];
  149. NSScanner* scanner = [NSScanner scannerWithString:ip];
  150. [scanner scanInteger:&touchid];
  151. }
  152. CGPoint lastPoint = [touch locationInView:showImageView];
  153. CGFloat ratex = 0.0;
  154. CGFloat ratey = 0.0;
  155. /*横屏状态下需要坐标翻转*/
  156. if(showImageView.frame.size.width > showImageView.frame.size.height){/*横屏模式*/
  157. ratex = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.width;
  158. ratey = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.height;
  159. }else{
  160. ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  161. ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  162. }
  163. CGFloat x = lastPoint.x*ratex;
  164. CGFloat y = lastPoint.y*ratey;
  165. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":0,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  166. return dataStr;
  167. }
  168. + (NSString *)tapUpCommandTouches:(UITouch *)touch
  169. touchCount:(NSInteger)touchCount
  170. showImageView:(UIImageView *)showImageView
  171. isLan:(BOOL)isLan
  172. {
  173. int touchid = 0;
  174. if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  175. {
  176. touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  177. }
  178. else/*地址转int*/
  179. {
  180. NSString *ip = [NSString stringWithFormat:@"%p",touch];
  181. ip = [ip substringFromIndex:2];
  182. NSScanner* scanner = [NSScanner scannerWithString:ip];
  183. [scanner scanInteger:&touchid];
  184. }
  185. CGFloat ratex = 0.0;
  186. CGFloat ratey = 0.0;
  187. CGPoint lastPoint = [touch locationInView:showImageView];
  188. /*横屏状态下需要坐标翻转*/
  189. if(showImageView.frame.size.width > showImageView.frame.size.height){/*横屏模式*/
  190. ratex = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.width;
  191. ratey = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.height;
  192. }else{
  193. ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  194. ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  195. }
  196. CGFloat x = lastPoint.x*ratex;
  197. CGFloat y = lastPoint.y*ratey;
  198. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":1,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  199. return dataStr;
  200. }
  201. + (NSString *)tapMoveCommandTouches:(UITouch *)touch
  202. touchCount:(NSInteger)touchCount
  203. showImageView:(UIImageView *)showImageView
  204. isLan:(BOOL)isLan
  205. {
  206. int touchid = 0;
  207. if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  208. {
  209. touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  210. }
  211. else/*地址转int*/
  212. {
  213. NSString *ip = [NSString stringWithFormat:@"%p",touch];
  214. ip = [ip substringFromIndex:2];
  215. NSScanner* scanner = [NSScanner scannerWithString:ip];
  216. [scanner scanInteger:&touchid];
  217. }
  218. CGFloat ratex = 0.0;
  219. CGFloat ratey = 0.0;
  220. CGPoint lastPoint = [touch locationInView:showImageView];
  221. /*横屏状态下需要坐标翻转*/
  222. if(showImageView.frame.size.width > showImageView.frame.size.height){/*横屏模式*/
  223. ratex = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.width;
  224. ratey = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.height;
  225. }else{
  226. ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  227. ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  228. }
  229. CGFloat x = lastPoint.x*ratex;
  230. CGFloat y = lastPoint.y*ratey;
  231. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":2,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  232. return dataStr;
  233. }
  234. + (NSString *)toStopControllerDevice500
  235. {
  236. NSString *stopContrStr = [NSString stringWithFormat:@"{\"data\":{\"x\":\"%d\",\"y\":\"%d\"},\"type\":\"closeServer\"}",0,0];
  237. if (USENEWCONTROLLCOMMONDNO500)
  238. {
  239. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  240. }
  241. else
  242. {
  243. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  244. }
  245. return stopContrStr;
  246. }
  247. /**
  248. * @brief 摇一摇
  249. *
  250. */
  251. + (NSString *)commandShake{
  252. NSString *stopContrStr = @"{\"data\":{},\"type\":\"shakeit\"}";
  253. if (USENEWCONTROLLCOMMONDNO500)
  254. {
  255. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  256. }
  257. else
  258. {
  259. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  260. }
  261. return stopContrStr;
  262. }
  263. /**
  264. * @brief 开启本地键盘透传
  265. *
  266. */
  267. + (NSString *)commandOpenLoaclKeyboad{
  268. NSString *stopContrStr = @"{\"data\":{\"type\":1},\"type\":\"InputMethod\"}";
  269. if (USENEWCONTROLLCOMMONDNO500)
  270. {
  271. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  272. }
  273. else
  274. {
  275. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  276. }
  277. return stopContrStr;
  278. }
  279. /**
  280. * @brief 关闭云手机键盘透传
  281. *
  282. */
  283. + (NSString *)commandClosePhoneKeyboad{
  284. NSString *stopContrStr = @"{\"data\":{\"keyCode\":66},\"type\":\"keyCode\"}";
  285. if (USENEWCONTROLLCOMMONDNO500)
  286. {
  287. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  288. }
  289. else
  290. {
  291. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  292. }
  293. return stopContrStr;
  294. }
  295. /**
  296. * @brief 发送透传文字给云手机/输入或者删除
  297. *
  298. * @param str 输入的内容 为nil时为删除
  299. *
  300. */
  301. + (NSString *)commandKeyboadInputStr:( NSString* _Nullable )str{
  302. NSString *stopContrStr = [NSString stringWithFormat:@"{\"data\":{\"KeyBoardData\":\"%@\",\"position\":1},\"type\":\"KeyoardInfo\"}",str];
  303. if (str == nil){
  304. stopContrStr = @"{\"data\":{\"KeyBoardData\":\"\",\"position\":-1},\"type\":\"KeyoardInfo\"}";
  305. }else{
  306. }
  307. if (USENEWCONTROLLCOMMONDNO500)
  308. {
  309. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  310. }
  311. else
  312. {
  313. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  314. }
  315. return stopContrStr;
  316. }
  317. /**
  318. * @brief 获取发给安卓手机的指令字符串
  319. *
  320. * @param code 指令类型 3:home 4:back 25:声音-键 24:声音+键 187:后台切换
  321. *
  322. */
  323. + (NSString *)commandBackOrHomeVolum500WithKeyCode:(int)code
  324. {
  325. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"keyCode\":\"%d\"},\"type\":\"keyCode\"}",code];
  326. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  327. if (USENEWCONTROLLCOMMONDNO500)
  328. {
  329. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  330. }
  331. else
  332. {
  333. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  334. }
  335. return dataStr;
  336. }
  337. /**
  338. * @brief 获取发给安卓手机设置分辨率的指令字符串
  339. *
  340. * @param type 200:极速 400:高速 600:标清 800:自动 1000:高清
  341. *
  342. */
  343. + (NSString *)commandResolution500WithType:(NSUInteger)type
  344. {
  345. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"definition\":%ld,\"clientType\":\"ios\",\"sceneType\":\"cloudPhone\"},\"type\":2}",type];
  346. if (USENEWCONTROLLCOMMONDNO500)
  347. {
  348. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  349. }
  350. else
  351. {
  352. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  353. }
  354. return dataStr;
  355. }
  356. /**
  357. * @brief 云手机预览图指令
  358. */
  359. + (NSString *)commandGetScreenPicWithTaskUid:(NSString *)taskUid intervalTime:(int)intervalTime
  360. {
  361. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"getScreenPic\",\"data\":{\"taskUid\":\"%@\",\"intervalTime\":\"%d\"}}",taskUid,intervalTime];
  362. if (USENEWCONTROLLCOMMONDNO500)
  363. {
  364. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  365. }
  366. else
  367. {
  368. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  369. }
  370. return dataStr;
  371. }
  372. /**
  373. * @brief 云手机截图指令
  374. */
  375. + (NSString *)commandCloudPhoneScreenshotWithTaskUid:(NSString *)taskUid
  376. {
  377. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"shortCat\",\"data\":{\"taskUid\":\"%@\"}}",taskUid];
  378. if (USENEWCONTROLLCOMMONDNO500)
  379. {
  380. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  381. }
  382. else
  383. {
  384. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  385. }
  386. return dataStr;
  387. }
  388. /**
  389. * @brief 云手机下载透传指令(云游戏下载透传到云手机)
  390. */
  391. + (NSString *)commandCloudPhoneDownloadWithTaskUid:(NSString *)taskUid apkUrl:(NSString *)apkUrl {
  392. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"downAndInstallApk\",\"data\":{\"taskUid\":\"%@\",\"apkUrl\":\"%@\"}}",taskUid,apkUrl];
  393. if (USENEWCONTROLLCOMMONDNO500)
  394. {
  395. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  396. }
  397. else
  398. {
  399. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  400. }
  401. return dataStr;
  402. }
  403. /**
  404. * @brief 云游戏支付透传指令 (云游戏在本地支付完成透传到云手机)payResult 0:失败 1:成功
  405. */
  406. + (NSString *)commandCloudPhonePayWithTaskUid:(NSString *)taskUid payResult:(int)payResult {
  407. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"payResult\",\"data\":{\"result\":\"%d\"}}",payResult];
  408. if (USENEWCONTROLLCOMMONDNO500)
  409. {
  410. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  411. }
  412. else
  413. {
  414. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  415. }
  416. return dataStr;
  417. }
  418. /**
  419. * @brief 剪切板接口
  420. *
  421. * @param str 要剪切的文本
  422. *
  423. */
  424. + (NSString *)commandCuttingWithContent:(NSString *)str
  425. {
  426. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"str\":\"%@\"},\"type\":\"cutting\"}",str];
  427. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  428. if (USENEWCONTROLLCOMMONDNO500)
  429. {
  430. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  431. }
  432. else
  433. {
  434. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  435. }
  436. return dataStr;
  437. }
  438. /**
  439. * @brief 记录推流开始时间
  440. *
  441. * @param deviceid 云手机id
  442. *
  443. */
  444. + (NSString *)commandConnectedWithDeviceId:(NSString *)deviceid
  445. {
  446. NSString *eventId = @"7";
  447. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"deviceId\":\"%@\"},\"type\":\"%@\"}",deviceid,eventId];
  448. if (USENEWCONTROLLCOMMONDNO500)
  449. {
  450. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  451. }
  452. else
  453. {
  454. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  455. }
  456. return dataStr;
  457. }
  458. + (NSArray *)getAllIvar:(id)object
  459. {
  460. NSMutableArray *array = [NSMutableArray array];
  461. unsigned int count;
  462. Ivar *ivars = class_copyIvarList([object class], &count);
  463. for (int i = 0; i < count; i++) {
  464. Ivar ivar = ivars[i];
  465. const char *keyChar = ivar_getName(ivar);
  466. NSString *keyStr = [NSString stringWithCString:keyChar encoding:NSUTF8StringEncoding];
  467. @try {
  468. id valueStr = [object valueForKey:keyStr];
  469. NSDictionary *dic = nil;
  470. if (valueStr) {
  471. dic = @{keyStr : valueStr};
  472. } else {
  473. dic = @{keyStr : @"值为nil"};
  474. }
  475. [array addObject:dic];
  476. }
  477. @catch (NSException *exception) {}
  478. }
  479. return [array copy];
  480. }
  481. + (NSString *)askControllcommandWithUseName:(NSString*)useName{
  482. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"code\":\"3000\",\"userName\":\"%@\",\"desc\":\"询问是否有在控制\"},\"type\":\"forwardMsg\"}",useName];
  483. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  484. if (USENEWCONTROLLCOMMONDNO500)
  485. {
  486. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  487. }
  488. else
  489. {
  490. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  491. }
  492. return dataStr;
  493. }
  494. + (NSString *)faceBackControllcommandWithUseName:(NSString*)useName haveControl:(BOOL)haveControl{
  495. NSString *code = @"4000";
  496. NSString *desc = @"有在控制";
  497. if (haveControl == NO) {
  498. code = @"4100";
  499. desc = @"未控制";
  500. }
  501. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"code\":\"%@\",\"userName\":\"%@\",\"desc\":\"%@\"},\"type\":\"forwardMsg\"}",code,useName,desc];
  502. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  503. if (USENEWCONTROLLCOMMONDNO500)
  504. {
  505. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  506. }
  507. else
  508. {
  509. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  510. }
  511. return dataStr;
  512. }
  513. + (NSString *)getBackControllcommandWithUseName:(NSString*)useName{
  514. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"code\":\"5000\",\"userName\":\"%@\",\"desc\":\"控制权限收回\"},\"type\":\"forwardMsg\"}",useName];
  515. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  516. if (USENEWCONTROLLCOMMONDNO500)
  517. {
  518. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  519. }
  520. else
  521. {
  522. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  523. }
  524. return dataStr;
  525. }
  526. + (NSString *)getPhoneSizecommand{
  527. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"getPhoneSize\"}"];
  528. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  529. if (USENEWCONTROLLCOMMONDNO500)
  530. {
  531. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  532. }
  533. else
  534. {
  535. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  536. }
  537. return dataStr;
  538. }
  539. + (NSString *)setPhoneSizecommandWithWidth:(NSInteger)width high:(NSInteger)high dpi:(NSInteger)dpi{
  540. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"width\":\"%ld\",\"height\":\"%ld\",\"dpi\":\"%ld\"},\"type\":\"setPhoneSize\"}",width,high,dpi];
  541. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  542. if (USENEWCONTROLLCOMMONDNO500)
  543. {
  544. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  545. }
  546. else
  547. {
  548. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  549. }
  550. return dataStr;
  551. }
  552. + (NSString *)noSyncWifiBack{
  553. NSString *dataStr = @"{\"data\":\"2\",\"type\":\"sync_wifi_back\"}";
  554. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  555. if (USENEWCONTROLLCOMMONDNO500)
  556. {
  557. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  558. }
  559. else
  560. {
  561. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  562. }
  563. return dataStr;
  564. }
  565. + (NSString *)downLoadAppWithAppUrl:(NSString*)appurl appId:(NSString *)appid{
  566. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"apkUrl\":\"%@\",\"taskUid\":\"%@\"},\"type\":\"downAndInstallApk\"}",appurl,appid];
  567. if (USENEWCONTROLLCOMMONDNO500)
  568. {
  569. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  570. }
  571. else
  572. {
  573. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  574. }
  575. return dataStr;
  576. }
  577. @end