
Eccoci con un nuovo appuntamento dell’iSpazio LastMinute, la nostra rubrica in cui vi elenchiamo le migliori applicazioni dell’AppStore che vengono scontate per un periodo di tempo limitato. E’ possibile che nel corso della giornata vengano aggiunti nuovi titoli per cui cliccate sul pulsante Google qui sotto per aggiungerci ai Feed RSS e seguire le evoluzioni.

[lastminute_449111716]![]()
un divertente gioco da tavolo per 2-4 giocatori dove ognuno di loro dovrà gestire 10 rane e cercare di riunirle in un unico gruppo all’interno di un’isola per vincere la partita. Le nostre rane verranno posizionate dai giocatori avversari nei posti più difficili ed impensati, rendendo il gioco appassionante ed avvincente. [finelm 0.79]
[lastminute_439763756] Ispirato ai videogiochi Lemmings e Worms, Dizzy Wizards è un simpatico gioco nel quale sarà necessario guidare i maghi nel tentativo di raggiungere il loro obiettivo, evitando le trappole e le insidie cruente, e talvolta anche sacrificarsi per salvare gli altri. [finelm 1.59]
[lastminute_505992297]
Free Apps 365 (Gratisapp) offre applicazioni che di solito sarebbero a pagamento permettendoci di risparmiare soldi. Potremo anche verificare il prezzo al quale di solito queste applicazioni sono vendute per renderci conto dei soldi che andremo a risparmiare. [finelm 1.59]
[lastminute_330594424] Walkmeter trasforma il nostro iPhone in un potente computer GPS per il fitness, dandoci le informazioni e la motivazione ad andare avanti, essere più sani e vivere più a lungo. Può essere usata per andare in bicicletta, correre, camminare, sciare, pattinare e molto altro. Il supporto ad iCloud permette di caricare i dati su un iPad per analizzarli dopo l’allenamento. [finelm 2.39]
[lastminute_422849370]![]()
Puzzle Neuroshima Hex è un gioco di strategia ambientato nel mondo di Neuroshima Hex. Guidiamo le nostre truppe alla vittoria grazie alle nostre abilità strategiche e cerchiamo di trovare la via d’uscita in oltre 100 situazioni di battaglia diverse. Nessuna intelligenza artificiale. Nessuna casualità. Nessun fattore fortuna. Solo noi, i nostri nemici e tanta pianificazione tattica. [finelm 2.39]
[lastminute_501938280] Vi ricordate i nastri dagli anni ottanta? Questa applicazione ci riporta ai vecchi tempi, attraverso una vasta collezione delle più belle immagini delle musicassette che ci hanno accompagnato e coccolato per tanto tempo. [finelm 0.79]
[lastminute_449226689] ActionShot ci consente di scattare qualsiasi movimento e di unirlo in un’unica foto creando una sorta di piano-sequenza, tutto comodamente dal nostro iPhone. [finelm 0.79]
[lastminute_497864213] Perché aggiungere il peso del binocolo quando possiamo averne uno incorporato nel nostro iPhone? Zoom fino a 5x per uno sguardo più attento alla natura, eventi sportivi, con la possibilità di scattare una foto ad alta risoluzione in modalità zoom. Binoculars incorpora la tecnologia GPS e visualizza la posizione sulla mappa, mostra la latitudine e longitudine, e ricorda la posizione esatta delle nostre immagini. [finelm 1.59]
[lastminute_471855893]![]()
Avete mai giocato a Zuma? Se avete apprezzato quel titolo, allora Fruit Tumble può fare al caso vostro. [finelm 0.79]
Il logo
, come su iTunes, indica quando un app è universale, quindi che si adatta automaticamente alla risoluzione dell’iPhone/iPod Touch o dell’ iPad.
Il logo
, come su iTunes, indica quando un gioco supporta Game Center. Fateci sapere quali scaricate in maniera tale da riuscire a trarre uno spunto per una recensione più completa ed accurata.
Nota: Essendo “offerte da prendere al volo”, i prezzi indicati nell’articolo risultano veritieri nel momento in cui si scrive ma è possibile che durante la giornata, o dopo qualche minuto, questi cambino e le applicazioni tornino a pagamento. Vi consigliamo di scaricare iSpazio Push App dall’AppStore in maniera tale da essere avvertiti tramite una notifica non appena pubblicheremo questo ed altri articoli.
// 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 = '

































































































































































































































Accedi per lasciare un commento:
0 Commenti