In qualità di Affiliato Amazon, iSpazio riceve una commissione dagli acquisti idonei senza alcun costo per voi. (info).
iOS 15.2, rilasciato questa settimana, introduce la possibilità per gli utenti di ripristinare il proprio iPhone o iPad bloccato senza bisogno di connettersi a un Mac o PC Windows.
Advertising
Come indicato in un documento di supporto (tramite 9to5Mac), iOS e iPadOS 15.2 aggiungono una nuova opzione “Cancella [Dispositivo]” per quando un dispositivo è bloccato a causa di più tentativi falliti di inserimento del passcode.
La nuova opzione è una gradita aggiunta e un allontanamento dal metodo precedente, che richiedeva ai clienti di mettere il proprio iPhone o iPad in modalità DFU e ripristinarlo tramite Finder su Mac o iTunes su Windows.
Dopo un paio di tentativi di inserimento passcode falliti, nella parte inferiore dello schermo apparirà l’opzione “Cancella iPhone”. Basta toccarlo, confermare che si desidera ripristinare il dispositivo, quindi inserire la password dell’ID Apple per annullare la registrazione dell’account. Il dispositivo si ripristinerà da solo, cancellando completamente tutti i dati.
Se il dispositivo non è in grado di connettersi al Wi-Fi o al cellulare, il passaggio di autorizzazione dell’ID Apple avrà esito negativo e il dispositivo non potrà essere formattato. In tal caso, dovremo ricorrere al metodo tradizionale DFU->PC.
iOS 15.2 e iPadOS 15.2 includono una serie di nuove funzionalità, tra cui un nuovo Rapporto sulla privacy delle app, l’Apple Music Voice Plan e altro ancora.
// Logica completa dello shortcode 'app'
function appstore_shortcode_logic($atts, $content = null) { // Attributi di default
$atts = shortcode_atts(array(
'id' => '',
'img' => '',
'nome' => '',
'sottotitolo' => '',
'prezzo' => '',
'link' => '',
'store' => 'App Store',
'template' => '',
'inapp' => '',
'background' => '',
'link_icon' => '',
), $atts, 'card');
// Verifica del valore dell'attributo 'stile'
$template_class = !empty($atts['template']) ? sanitize_html_class($atts['template']) : '';
// Verifica se il file JSON della cache esiste
$cache_dir = '/srv/www/ispazio.net/www/wp-content/plugins/appstore_ispazio/app_cache/';
$cache_file = $cache_dir . "app_" . sanitize_key($atts['id']) . ".json";
// Determina se la cache è valida: JSON esiste, non scaduto E icona principale esiste sul disco
$_app_id_check = sanitize_key($atts['id']);
$_img_main_path = $cache_dir . "icon250_" . $_app_id_check . ".jpg";
$_cache_valid = file_exists($cache_file) && filesize($cache_file) > 0
&& time() - filemtime($cache_file) < 31557600
&& file_exists($_img_main_path);
if ($_cache_valid) {
$json = file_get_contents($cache_file);
} else {
// Interroga l'API di App Store e scarica il JSON utilizzando cURL
$itunes_api_base = "https://itunes.apple.com/lookup?id=" . sanitize_key($atts['id']);
$country_list = ['IT', 'US']; // puoi aggiungere altri paesi se vuoi
$json = '';
$data = [];
foreach ($country_list as $country) {
$itunes_api_url = $itunes_api_base . "&country=" . $country;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $itunes_api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
$json = curl_exec($ch);
curl_close($ch);
$data = json_decode($json, true);
if (!empty($data['results'])) {
break; // abbiamo trovato un risultato valido, fermiamo il ciclo
}
}
if (isset($data['results'][0]['artworkUrl100'])) {
$original_image_url = $data['results'][0]['artworkUrl100'];
$new_image_url = str_replace('100x100bb.jpg', '250x250bb.jpg', $original_image_url);
// Scarica e salva l'immagine dell'artwork sul tuo server
$image_id = sanitize_key($atts['id']);
$image_path = $cache_dir . "icon250_" . $image_id . ".jpg";
file_put_contents($image_path, file_get_contents($new_image_url));
if (function_exists('ispazio_convert_to_modern')) ispazio_convert_to_modern($image_path);
// Modifica il JSON con l'URL dell'immagine dell'artwork sul tuo server
$data['results'][0]['artworkUrl100'] = "https://www.ispazio.net/wp-content/plugins/appstore_ispazio/app_cache/icon250_" . $image_id . ".jpg";
// Crea anche versione 140px per template mini (retina 2x per 70x70)
$icon140_path = $cache_dir . "icon140_" . $image_id . ".jpg";
if ( ! file_exists( $icon140_path ) && function_exists( 'imagecreatefromjpeg' ) ) {
$src_img = @imagecreatefromjpeg( $image_path );
if ( $src_img ) {
$dst_img = imagecreatetruecolor( 140, 140 );
imagecopyresampled( $dst_img, $src_img, 0, 0, 0, 0, 140, 140, imagesx( $src_img ), imagesy( $src_img ) );
imagejpeg( $dst_img, $icon140_path, 85 );
imagedestroy( $src_img );
imagedestroy( $dst_img );
if (function_exists('ispazio_convert_to_modern')) ispazio_convert_to_modern($icon140_path);
}
}
// Sostituisci anche gli URL delle prime 4 immagini degli screenshot
if (isset($data['results'][0]['screenshotUrls'])) {
$screenshotUrls = $data['results'][0]['screenshotUrls'];
$screenshotUrlsOnServer = array();
for ($i = 0; $i < min(count($screenshotUrls), 4); $i++) {
$screenshotUrl = $screenshotUrls[$i];
$screenshotFilename = basename($screenshotUrl);
$screenshotSavePath = $cache_dir . "screenshot_" . $image_id . "_" . $i . ".jpg";
// Scarica e salva l'immagine dello screenshot sul tuo server
file_put_contents($screenshotSavePath, file_get_contents($screenshotUrl));
if (function_exists('ispazio_convert_to_modern')) ispazio_convert_to_modern($screenshotSavePath);
// Modifica il JSON con l'URL dell'immagine dello screenshot sul tuo server
$screenshotUrlsOnServer[] = "https://www.ispazio.net/wp-content/plugins/appstore_ispazio/app_cache/screenshot_" . $image_id . "_" . $i . ".jpg";
}
// Aggiorna il JSON con gli URL delle immagini degli screenshot sul tuo server
$data['results'][0]['screenshotUrls'] = $screenshotUrlsOnServer;
}
}
// Salva il JSON nella cache solo se non è vuoto
if (!empty($json)) {
file_put_contents($cache_file, json_encode($data));
}
}
// Decodifica il JSON
$data = json_decode($json, true);
// Se il "nome" non è specificato nell'attributo, usa il trackName dal JSON
$nome = isset($atts['nome']) && !empty($atts['nome']) ? $atts['nome'] : ($data['results'][0]['trackName'] ?? 'Scarica da App Store');
// Se il "sottotitolo" non è specificato nell'attributo, usa artistName dal JSON
$sottotitolo = isset($atts['sottotitolo']) && !empty($atts['sottotitolo']) ? $atts['sottotitolo'] : ($data['results'][0]['artistName'] ?? '');
// Se il "prezzo" non è specificato nell'attributo, usa il formattedPrice dal JSON
$formattedPrice = !empty($data['results'][0]['formattedPrice']) ? $data['results'][0]['formattedPrice'] : null; $prezzo = !empty($atts['prezzo']) ? $atts['prezzo'] : (!empty($formattedPrice) ? $formattedPrice : (!empty(trim($content)) ? trim($content) : 'OTTIENI'));
// Se l'URL dell'immagine non è specificato nell'attributo, usa quello dal JSON
$hide_image_class = '';
$card_body_style = '';
$container_style = '';
$container_extra_class = '';
if (isset($atts['img']) && trim($atts['img']) === 'scontiamolo') {
$img = 'https://www.ispazio.net/wp-content/plugins/appstore_ispazio/app_cache/icon250_1506946624.jpg';
$container_extra_class = 'scontiamolo-mode';
} elseif (!empty($atts['img'])) {
$img = $atts['img'];
} else {
$img = $data['results'][0]['artworkUrl100'] ?? "https://www.ispazio.net/wp-content/uploads/2022/10/appstore_icon.png";
}
// Per template mini usa icon140 (70x70 retina) invece di icon250
if ( $template_class === 'mini' ) {
$img = str_replace( 'icon250_', 'icon140_', $img );
}
// Genera il link dell'app su App Store
$link = !empty($atts['link']) ? $atts['link'] : "https://apps.apple.com/it/app/id" . $atts['id'] . "?platform=iphone";
$link_icon = !empty($atts['link_icon']) ? $atts['link_icon'] : $link;
// HTML immagine con o senza effetto rotazione (in base a template)
$img_html = '';
if (!empty($img)) {
if ($template_class === 'striscia') {
$img_html = '
';
} else {
$img_html = '
';
}
}
// Costruisci l'HTML finale
// Determina il contenuto del titolo in base al template
$title_content = '';
if ($template_class === 'blackfriday') {
$title_content = '
';
} else {
$title_content = esc_html($nome);
}
// offertediprimavera usa lo stesso layout CSS di blackfriday
$css_class = $template_class;
if ($template_class === 'offertediprimavera') {
$css_class = 'blackfriday offertediprimavera';
}
$output = '
';
return $output;
}
Sai che siamo anche su Telegram? Unisciti al nostro canale iSpazio per ricevere le notifiche oppure Apple Italia per chattare con altri utenti. Scopri i migliori prodotti Tech in sconto su Amazon con il nostro canale OFFERTE iSpazio.
Accedi per lasciare un commento:
1 Commento