AppStore 现在需要 iPhone 11(或高 iPhone X)皮肤来存储 6.5 英寸元数据图像。请有人指出我的方向,以便在我的 Codenameone 模拟器中使用。
我正在最新安装(CN1 v6),我的 .codenameone 文件夹中最多有 IPhoneX.skin,但我想尽可能多地证明未来,所以选择 11。谢谢
AppStore 现在需要 iPhone 11(或高 iPhone X)皮肤来存储 6.5 英寸元数据图像。请有人指出我的方向,以便在我的 Codenameone 模拟器中使用。
我正在最新安装(CN1 v6),我的 .codenameone 文件夹中最多有 IPhoneX.skin,但我想尽可能多地证明未来,所以选择 11。谢谢
尽管您可以在此处提交 RFE,但我们还没有 iPhone 11 皮肤。但这对大多数人来说并不重要。
大多数人使用这些工具以便携的方式生成屏幕截图:
我有同样的问题。我使用不同的方法来获取商店要求的一个或多个屏幕截图。简而言之,我在“ 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
,以免出现安全问题。