1

AppStore 现在需要 iPhone 11(或高 iPhone X)皮肤来存储 6.5 英寸元数据图像。请有人指出我的方向,以便在我的 Codenameone 模拟器中使用。

我正在最新安装(CN1 v6),我的 .codenameone 文件夹中最多有 IPhoneX.skin,但我想尽可能多地证明未来,所以选择 11。谢谢

4

2 回答 2

2

尽管您可以在此处提交 RFE,但我们还没有 iPhone 11 皮肤。但这对大多数人来说并不重要。

大多数人使用这些工具以便携的方式生成屏幕截图:

于 2020-01-16T02:19:11.330 回答
2

我有同样的问题。我使用不同的方法来获取商店要求的一个或多个屏幕截图。简而言之,我在“ Browser Stack App Live(具有多个真实设备,例如所需的 iPhone 11)上执行该应用程序,使用的代码使用 REST 请求以编程方式向我发送应用程序的一个或多个屏幕截图。

请注意,在 Browser Stack App Live 上无法发送电子邮件,这就是为什么我创建了自己的 REST API 来上传屏幕截图。

很简单,我在分享之前测试了以下解决方案。在安装了 Apache + PHP 的临时 VPS 上,或者在您的本地计算机上(如果您有公共 IP),创建以下内容upload.php,记住$server_url使用您的实际 url 进行更新:

<?php 
header('Content-Type: application/json; charset=utf-8');
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST");
$response = array();
$upload_dir = 'uploads/';
$server_url = 'https://www.example.com/mydir/';
if($_FILES['screenshot'])
{
    $screenshot_name = $_FILES["screenshot"]["name"];
    $screenshot_tmp_name = $_FILES["screenshot"]["tmp_name"];
    $error = $_FILES["screenshot"]["error"];
    if($error > 0){
        $response = array(
            "status" => "error",
            "error" => true,
            "message" => "Error uploading the file!"
        );
    }else 
    {
        $random_name = rand(1000,1000000)."-".$screenshot_name;
        $upload_name = $upload_dir.strtolower($random_name);
        $upload_name = preg_replace('/\s+/', '-', $upload_name);

        if(move_uploaded_file($screenshot_tmp_name , $upload_name)) {
            $response = array(
                "status" => "success",
                "error" => false,
                "message" => "File uploaded successfully",
                "url" => $server_url."/".$upload_name
              );
        }else
        {
            $response = array(
                "status" => "error",
                "error" => true,
                "message" => "Error uploading the file!"
            );
        }
    }

}else{
    $response = array(
        "status" => "error",
        "error" => true,
        "message" => "No file was sent!"
    );
}
echo json_encode($response);
?>

之后,mkdir uploads以及chown相应的 php 文件和上传目录的权限。服务器已准备就绪。

在您的应用上,添加以下方法(记得更改String url值):

public static void sendMeScreenshot() {
        Form form = Display.getInstance().getCurrent();
        if (form != null) {
            try {
                Image screenshot = Image.createImage(form.getWidth(), form.getHeight());
                form.paintComponent(screenshot.getGraphics(), true);
                String file = FileSystemStorage.getInstance().getAppHomePath() + "/screenshot_" + System.currentTimeMillis() + ".png";
                OutputStream output = FileSystemStorage.getInstance().openOutputStream(file);
                ImageIO.getImageIO().save(screenshot, output, ImageIO.FORMAT_PNG, 1.0f);

                String url = "https://www.example.com/mydir/upload.php";
                MultipartRequest request = new MultipartRequest();
                request.setUrl(url);
                request.addData("screenshot", file, "multipart/form-data");
                NetworkManager.getInstance().addToQueue(request);
            } catch (IOException ex) {
                Log.e(ex);
            }
        }
    }

UITimer.timer(5000, false, hi, () -> sendMeScreenshot());最后,在想要的时间之后,使用类似代码获取您感兴趣的表单的屏幕截图。

在模拟器中测试,它应该可以工作。添加一些日志记录并在网络监视器中检查返回的 JSON。如果一切正常,请使用 Browser Stack App Live 打开您的应用,选择所需的设备(在本例中为 iPhone 11)。upload您将在 VPS 的所选目录上找到屏幕截图(或多个屏幕截图) 。您可以使用浏览器下载scp或直接在浏览器中打开它们。

如果您没有所需的设备,此解决方案很有用,但请记住不要让您的设备保持在线upload.php,以免出现安全问题。

于 2020-01-16T13:36:21.390 回答