Durante il keynote della WWDC23, Apple ha annunciato una nuova funzione per le AirPods Pro 2 chiamata Audio Adattivo. Sostanzialmente si tratta di una modalità che alterna in maniera intelligente sia la modalità di isolamento acustico che la modalità trasparenza.
A seconda dei casi, le AirPods capiranno quando devono completamente eliminare i rumori circostanti per farci immergere nella musica e quando invece devono farci ascoltare quello che avviene intorno a noi come il suono di un clackson, la voce di una persona che parla nella nostra direzione e così via.
Purtroppo questa funzione è riservata soltanto alle AirPods Pro 2 e nessun altro modello, nemmeno le AirPods Max. In questo articolo vi spieghiamo come provare questa funzione, anch’essa in beta, visto che non viene installata automaticamente con il passaggio ad iOS 17.

Guida: Come installare il nuovo firmware beta nelle AirPods Pro 2
Normalmente per svolgere questa operazione è richiesto un account da sviluppatore ma, fortunatamente, Apple ha reso l’upgrade degli account completamente gratuito e quindi adesso qualsiasi utente “semplice” può aggiornare l’Apple ID con i privilegi di sviluppatore.
Nota importante: Una volta aggiornate le cuffie, non sarà possibile “tornare indietro”, quindi se qualcosa non funzionerà a dovere non potrete ripristinare il firmware che non vi dava bug. Per questo motivo l’aggiornamento potrebbe non essere consigliato, ma se proprio non resistete, allora ecco come dovete procedere.
Seguite questi passaggi, uno dopo l’altro:
1. Come prima cosa bisogna attivare la modalità sviluppatore sul vostro iPhone aggiornato ad iOS 17 beta. Verificate se potete attivarla entrando in Impostazioni > Privacy e sicurezza > Modalità sviluppatore (alla fine dell’elenco). Se non la trovate, continuate con il passaggio 2. se invece la trovate, attivatela e saltate direttamente al passaggio 13.
2. Entrate sul sito degli sviluppatori Apple dal vostro Mac (Ventura 13.3 o successivo) ed accedete con il vostro Apple ID gratuito.
3. Nella sezione Program Resources, guardate sul lato destro e scegliete Software Download.

4. Adesso cliccate su “Applications” nel menu superiore, a destra

5. Individuate Xcode 15 beta e cliccate su View Downloads.

6. Si aprirà un’altra pagina con un elenco di possibili download. Fermatevi sul primo e cliccate su “View details” per espandere il menu. Togliete la spunta da iOS 17.
7. Adesso cliccate sul tasto blu per il download di Xcode 15 beta and Selected Platforms.

8. Scompattate il file Xcode_15_beta.xip appena scaricato.

9. Aprite Xcode 15 beta contenuto nel file appena scompattato. Potete anche trascinarlo in “Applicazioni”. Non dovreste aver bisogno di scaricare le risorse di iOS 17, quindi continuate a tenere deselezionato iOS 17 dal popup che vi comparirà alla prima apertura di Xcode-beta.

10. Utilizzate un cavetto Lightning per collegare il vostro iPhone al computer. E’ importante avere già iOS 17 installato sull’iPhone.
11. Attendete pochi secondi dopodichè prendete l’iPhone ed entrate in Impostazioni.
12. Scegliete Privacy e sicurezza > scorrete fino in fondo e troverete la Modalità sviluppatore.
13. Attivate la modalità sviluppatore e seguite il processo per riavviare il vostro iPhone.
14. Dopo aver riavviato e sbloccato l’iPhone, entrando in Impostazioni apparirà un popup “Vuoi attivare la modalità sviluppatore?“, ovviamente cliccate su Attiva.
15. Tornate alle impostazioni ed ora troverete una nuova scheda Sviluppatore (sotto Provider TV).
16. Scegliete Firmware beta pre-release (quasi alla fine dell’elenco) e poi attivate l’interruttore in corrispondenza delle vostre AirPods Pro 2 personali che intendete aggiornare.
17. Apple afferma che “gli aggiornamenti del firmware verranno installati quando gli AirPods saranno nella loro custodia di ricarica e vicini a questo iPhone“.
18. Purtroppo, non potete forzare l’installazione dell’aggiornamento beta degli AirPods, ma potete verificare quando verrà installato automaticamente recandovi in Bluetooth e cliccando la (i) in corrispondenza delle vostre AirPods.
Saprete di avere la versione beta quando gli AirPods Pro 2 passeranno dalla versione 5E135 alla versione 6A238h (di solito impiega circa 30 minuti per l’installazione automatica).
// 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:
2 Commenti