2015-07-13 16 views
9

Cập nhật
Tài liệu tham khảo: perfecto mobiledevice anywhereLàm cách nào để kiểm soát màn hình thiết bị di động từ trình duyệt?


tôi đang làm việc trên một đám mây dựa trên giải pháp kiểm tra điện thoại di động mà nên hỗ trợ cả iOS và Android. Nó yêu cầu các thiết bị di động được kết nối phải được xử lý từ trình duyệt.

Tôi đã học được rằng một thiết bị di động có một loại đại lý của chương trình (mà đòi hỏi phải có thiết bị được cắm rễ) được cài đặt mà

  • suối màn hình điện thoại di động để trình duyệt
  • và tiêm các sự kiện

Có cách tiếp cận nào khác để thực hiện điều này có thể mà không cần root/jail phá vỡ thiết bị không?

Câu hỏi này có thể trông rất rộng nhưng tôi đã cố gắng hết sức để tìm ra cách di chuyển đúng hướng.

Đối với iOS, tôi lấy manh mối từ this SOF question.

Bất kỳ con trỏ nào được đánh giá cao.


Cập nhật 1:
This question gần với những gì tôi đang tìm kiếm.

Cập nhật 2: Tôi đã tìm thấy Android Screen Library cho thiết bị Android và đã thử nghiệm trên một vài thiết bị. Nó không yêu cầu thiết bị được root nhưng yêu cầu khởi động lại dịch vụ từ Command Line trên mọi thiết bị khởi động lại và không thể làm cho nó hoạt động trên Lollipop..

Cập nhật 3: Trong khi Android Screen Library giúp chụp màn hình mà không cổ vũ nhưng nó không giúp đỡ trong việc tiêm các sự kiện. Ngay cả chụp màn hình có vẻ lỗi - đôi khi chụp bằng bản vá màu đen và không hoạt động trên Lollipop!

Cập nhật 4: Tài liệu tham khảo: perfecto mobiledevice anywhere Có vẻ như họ đang sử dụng ADB để xử lý nhiều thứ như cài đặt ứng dụng/gỡ bỏ cài đặt, gửi các sự kiện qua adb shell input tap x y. Ai có thể vui lòng làm sáng tỏ không?

Cập nhật 5: Tôi đã đi qua this SO Post từ Adrian Taylor, một kỹ sư cũ của RealVNC. Đây là giải thích chi tiết nhất. Mặc dù Android Lollipop có các API MediaProjection nhưng dường như lưu trữ ảnh chụp màn hình dưới dạng tệp MP4 trên sdcard. Ngoài ra, theo số google dashboard - tháng 8 năm 2015, Lollipop vẫn còn khoảng 15% cơ sở cài đặt Android, vì vậy Kitkat phải được xem xét cho bất kỳ giải pháp nào.

Cập nhật 6: Tôi đã tìm thấy libvncserver, tự hỏi nếu nó sẽ thực hiện công việc. Tôi sẽ kiểm tra và đăng kết quả.

Cảm ơn

+1

Vui lòng thêm nhận xét với phiếu bầu xuống của bạn;) Nó sẽ giúp tôi. – iuq

+0

Tôi không chắc chắn đó là những gì bạn đang tìm kiếm, nhưng bạn có thể tự động kiểm tra giao diện người dùng bằng JavaScript. [Hướng dẫn] (http://code.tutsplus.com/tutorials/introduction-to-ios-testing-with-ui-automation--cms-22730), [Tài liệu] (https://developer.apple.com/ library/mac/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html) –

+0

@Islam Q - cảm ơn, đây thực sự là bài viết hay. Nhưng câu hỏi của tôi là ít khác nhau như nhiều hơn về kết nối và giải pháp cũng sẽ được sử dụng chủ yếu để kiểm tra thủ công. – iuq

Trả lời

4

Sử dụng WebKit, điều này sẽ giúp bạn khá nhiều gần như là bạn có thể nhận được và vẫn còn nhiều hơn khả năng đi qua quá trình phê duyệt với Apple

Dưới đây là một ví dụ đơn giản, điều này về cơ bản làm cho một selector trên trang web, gửi giá trị chuỗi cho tôi trên ứng dụng, bạn xử lý giá trị đó và gửi lại kết quả và sau đó bạn đăng làm dòng tiêu đề của trang web.

<h2 id="headline">loading...</h2> 
<select id="selector"> 
    <option value="systemVersion" selected>iOS Version</option> 
    <option value="systemName">System Name</option> 
    <option value="name">Device Name</option> 
    <option value="model">Device Model</option> 
    <option value="userInterfaceIdiom">User Interface</option> 
    <option value="identifierForVendor">Vendor ID</option> 
</select> 

Đây là javascript:

var headline = $("#headline"); 
var selection = $("#selector"); 

function set_headline (text) { 
    headline.text(text); 
} 

function call_native() { 
    var prop = selection.val(); 
    set_headline("asked for " + prop + "..."); 
    window.webkit.messageHandlers.observe.postMessage(prop); 
} 

setTimeout(call_native, 1000); 
selection.on("change", call_native); 

Vào cuối ứng dụng, bạn thiết lập như sau:

// configure WebView và địa điểm webview trên màn hình

[controller addScriptMessageHandler:self name:@"observe"]; 
configuration.userContentController = controller; 
NSURL *jsbin = [NSURL URLWithString:k_JSBIN_URL]; 

_webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; 
[_webView loadRequest:[NSURLRequest requestWithURL:jsbin]]; 
[self.view addSubview:_webView]; 

xử lý WebView sự kiện:

-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message 
{ 
// Check to make sure the name is correct 
    if ([message.name isEqualToString:@"observe"]) { 
     // Log the message received 
     NSLog(@"Received event %@", message.body); 

     // Then pull something from the device using the message body 
     NSString *version = [[UIDevice currentDevice] valueForKey:message.body]; 

     // Execute some JavaScript using the result 
     NSString *exec_template = @"set_headline(\"received: %@\");"; 
     NSString *exec = [NSString stringWithFormat:exec_template, version]; 
     [_webView evaluateJavaScript:exec completionHandler:nil]; 
    } 
} 
+0

Cảm ơn bạn đã trả lời. Nó chỉ hoạt động cho ứng dụng web/ứng dụng lai hoặc ứng dụng gốc không? ... xin lỗi tôi chưa thử nghiệm bất kỳ thứ gì trên iOS vì tôi vẫn đang cố gắng tìm ra giải pháp Android. – iuq

+0

đây là thuần túy bản địa, đây không phải là cho lai, tất cả cho ObjC trong trường hợp này, đó là lý do tại sao nó rất mạnh mẽ – Loxx

Các vấn đề liên quan