Eccoci con un nuovo appuntamento di 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 qui e scaricate iSpazio Push App per seguire le evoluzioni dell’articolo.

[lastminute_1018357323] Un grande mondo da esplorare con la giovane protagonista di questa storia, una ragazza di nome Elena, alle prese con la ricerca del padre. Ad aiutare la fanciulla c’è un amuleto, che ha ricevuto in dono da suo padre, che le permette di proiettare il suo spirito in un regno spettrale e comunicare con i morti. Un gioco avvincente con una trama accattivante. [finelm 2.99]
[lastminute_995051105] Bellissima avventura con oggetti nascosti, disponibile per iPhone ed iPad, ti porterà ad affrontare un viaggio verso l’isola di Creta per indagare su di una misteriosa marea viola e una città leggendaria. Un gioco divertente con enigmi da risolvere. [finelm 6.99]
[lastminute_1124143528] Il tuo mestiere di investigatore del paranormale te ne fa vedere delle belle e anche stavolta avrai il tuo bel da fare, grazie ad un manufatto unico dovrai riuscire a liberare una giocane coppia dagli spiriti maligni che li assillano. Un gioco con puzzle e scene di oggetti nascosti divertente. [finelm 6.99]
[lastminute_485246824] Un particolare gioco musicale. Dopo la scomparsa dell’uomo i robot hanno convertito le emozioni in musica memorizzandola in un luogo chiamato Cytus per mantenere vivo qualcosa che appartenesse agli umani. Più di 9 livelli di difficoltà per tanto divertimento e sfide, ogni capitolo è realizzato a mano in modo eccellente da “Reyark”. [finelm 3.49]
[lastminute_446164379] Divertente e semplice giochino in cui ci ritroveremo a guidare una macchina della polizia e a testare le nostre capacità. Dovremo accelerare, rallentare, saltare al momento giusto superando ostacoli, nemici e boss di fine livello. [finelm 1.99]
[lastminute_504481239] L’amatissimo classico “Snake” viene riproposto in questa versione per iPhone ed iPad. Con comandi semplici ed intuitivi è un piacere giocarci, anche nelle sue 4 diverse modalità: classical, modern, survival e crazy. [finelm 0.99]
[lastminute_1336046182] Un puzzle game interessante e con una grafica piuttosto minimal. Risolvi i puzzle cambiando la prospettiva da cui li osservi e passa da una rappresentazione 2D a 3D per trovare la soluzione. [finelm 5.99]
[lastminute_515220373] Aiuta Scarlett a salvare animali esotici nel lontano Madagascar, che si sono ammalati per un motivo sconosciuto. 90 bellissimi livelli, 2 modalità di gioco diverse: “carriera” ed “endless”, trofei e risultati unici da ottenere. [finelm 6.99]
[lastminute_867733591] Logica e reattività ti serviranno per andare avanti in questo rompicapo di fisica basato sulla gravità. L’obiettivo? È semplice: distruggere gli Zombi e non far cadere nessuno dei cervelli dalla piattaforma. [finelm 0.99]
[lastminute_690016261] Un adorabile cagnolino sta cercando il suo padrone, e dovrà attraversare ben otto mondi diversi. L’ambiente è raramente ripetitivo, gli enigmi sono sempre nuovi. La storia è raccontata senza parole con il gioco stesso. Un puzzle game che può essere giocato da chiunque, dai bambini e dai più grandi. Tutti adoreranno questo delizioso platform e il suo peloso protagonista. [finelm 0.99]
[lastminute_331441694] Nota: Essendo “offerte da prendere al volo”, i prezzi indicati nell’articolo risultano veritieri nel momento in cui viene scritto 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 push non appena pubblicheremo i nostri LastMinute quotidiani.[finelm 0.00]
Fateci sapere quali scaricate in maniera tale da riuscire a trarre uno spunto per una recensione più completa ed accurata.
// 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 = '

































































































































































































































I commenti sono chiusi per questo articolo.
0 Commenti