{"id":3136,"date":"2010-04-22T11:09:26","date_gmt":"2010-04-22T09:09:26","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=3136"},"modified":"2010-04-22T11:19:08","modified_gmt":"2010-04-22T09:19:08","slug":"t036-come-implementare-suoni-nelle-nostre-applicazioni-iphone","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t036-come-implementare-suoni-nelle-nostre-applicazioni-iphone\/","title":{"rendered":"T#036 &#8211; Come implementare suoni nelle nostre applicazioni iPhone"},"content":{"rendered":"<p>Ciao a tutti da Vanni. Oggi vi propongo un breve tutorial su come implementare suoni al tocco nelle nostre applicazioni iPhone! Partiamo subito con la nostra guida. Innanzitutto importiamo il framework necessario per la riproduzione dei suoni di sistema <strong>AudioToolbox.framework<\/strong> ( bisogna specificare per\u00f2 che nonostante si parli di suoni di sistema non ce ne viene messo a disposizione nemmeno uno, e sar\u00e0 quindi necessario crearseli da soli )<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_01.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_01.jpg\" alt=\"T#036 - Implementiamo suoni al tocco screenshot 01\" title=\"T036_01\" width=\"401\" height=\"266\" class=\"aligncenter size-full wp-image-3137\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_01.jpg 401w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_01-300x199.jpg 300w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/a><br \/>\n<\/center><!--more--><\/p>\n<p>Importiamo il framework e dichiariamo il metodo che useremo per avviare il suono nel file di intestazione .h:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n #import <AudioToolbox\/AudioToolbox.h>\r\n\r\n@interface PlaySoundViewController : UIViewController {\r\n\r\n}\r\n\r\n-(IBAction) avviaSuono:(id)sender;\r\n\r\n@end\r\n<\/pre>\n<p>Trasciniamo quindi, all&#8217;interno di &#8220;Resources&#8221;, in &#8220;Groups &#038; Files&#8221; il file audio, nel nostro caso .wav, che desideriamo far suonare, facendo attenzione a mettere la spunta, se non presente, su &#8220;Copy items into destination group&#8217;s folder (if needed)&#8221;:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_02.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_02.jpg\" alt=\"T#036 - Implementiamo suoni al tocco screenshot 02\" title=\"T036_02\" width=\"257\" height=\"239\" class=\"aligncenter size-full wp-image-3138\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Passiamo ora al file di implementazione .m e aggiungiamo il framework:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import \"PlaySoundViewController.h\"\r\n#import <AudioToolbox\/AudioToolbox.h>\r\n\r\n@implementation PlaySoundViewController\r\n...\r\n<\/pre>\n<p>Definiamo quindi l&#8217;azione che associeremo successivamente al pulsante che creeremo tra poco con Interface Builder:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n-(IBAction)avviaSuono:(id)sender{\r\n\tCFBundleRef mainBundle= CFBundleGetMainBundle();\r\n\tCFURLRef soundFileURLRef;\r\n\tsoundFileURLRef = CFBundleCopyResourceURL(mainBundle,\r\n(CFStringRef) @\"Ok\", CFSTR (\"wav\"), NULL);\r\n\tUInt32 soundID;\r\n\tAudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);\r\n\tAudioServicesPlaySystemSound(soundID);\r\n}\r\n<\/pre>\n<p>Apriamo Interface Builder per disegnare la nostra semplicissima interfaccia grafica. Per far ci\u00f2, facciamo doppio clisk sul file .xib. Trasciniamo quindi un UIButton nella nostra View come mostrato in figura:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_03.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_03.jpg\" alt=\"T#036 - Implementiamo suoni al tocco screenshot 03\" title=\"T036_03\" width=\"211\" height=\"318\" class=\"aligncenter size-full wp-image-3139\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_03.jpg 211w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_03-199x300.jpg 199w\" sizes=\"auto, (max-width: 211px) 100vw, 211px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Colleghiamo quindi il pulsante all&#8217;azione:<\/p>\n<p><center><\/p>\n<div id=\"attachment_3140\" style=\"width: 366px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_04.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3140\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_04.jpg\" alt=\"\" title=\"T036_04\" width=\"356\" height=\"306\" class=\"size-full wp-image-3140\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_04.jpg 356w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_04-300x257.jpg 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/a><\/p>\n<p id=\"caption-attachment-3140\" class=\"wp-caption-text\">T#036 &#8211; Implementiamo suoni al tocco screenshot 04<\/p>\n<\/div>\n<p><\/center><\/p>\n<p>Ricordiamoci di selezionare &#8220;Touch Up Inside&#8221; al rilascio del mouse:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_05.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_05.jpg\" alt=\"T#036 - Implementiamo suoni al tocco screenshot 05\" title=\"T036_05\" width=\"217\" height=\"291\" class=\"aligncenter size-full wp-image-3141\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Con l&#8217;interfaccia e il tutorial abbiamo conlcuso. Possiamo quindi salvare e chiudere Interface Builder. Torniamo in Xcode, e clicchiamo su &#8220;Build and Go&#8221;, per testare la nostra applicazione sul simulatore o direttamente sul nostro dispositivo. Ci baster\u00e0 cliccare sul nostro pulsante per poter ascoltare il suono caricato! Ovviamente potrete usare nelle vostre applicazioni tutti i suoni che vorrete, associati ad ogni tipo di evento \ud83d\ude09<\/p>\n<p>Vi lasciamo con uno screenshot dell&#8217;applicazione in esecuzione e con il link per il <a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/PlaySound.zip\" target=\"_blank\">download del progetto completo<\/a>.<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_06.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_06.jpg\" alt=\"T#036 - Implementiamo suoni al tocco screenshot 06\" title=\"T036_06\" width=\"179\" height=\"332\" class=\"aligncenter size-full wp-image-3142\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_06.jpg 179w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/04\/T036_06-161x300.jpg 161w\" sizes=\"auto, (max-width: 179px) 100vw, 179px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Alla Prossima<br \/>\nCiao<\/p>\n<p>Vanni<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ciao a tutti da Vanni. Oggi vi propongo un breve tutorial su come implementare suoni al tocco&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[196,195,197,1],"class_list":["post-3136","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-audio","tag-audiotoolbox","tag-suoni-applicazioni-iphone","tag-tutorial-pratici"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=3136"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3136\/revisions"}],"predecessor-version":[{"id":3147,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3136\/revisions\/3147"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=3136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=3136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=3136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}