2014-09-22 17 views
11

Ich habe diesen Code in meinen Apps seit iOS3 und es hat funktioniert. Soweit ich weiß, wurden diese Bibliotheken in iOS8 überhaupt nicht geändert, aber es funktioniert nicht in iOS8. Es stürzt nicht ab oder irgendetwas, es spielt einfach nie den Klangeffekt.AudioServicesPlaySystemSound funktioniert nicht in iOS8

Irgendwelche Ideen?

static void completionCallback (SystemSoundID mySSID, void* myself) { 
    AudioServicesRemoveSystemSoundCompletion(mySSID); 
    AudioServicesDisposeSystemSoundID(mySSID); 
} 

+ (void) playSound: (NSString *)path { 
    SystemSoundID soundID; 
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);  
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, completionCallback, NULL); 
    AudioServicesPlaySystemSound(soundID); 
} 
+0

Ich habe das gleiche Problem mit meiner App, den Code, wie das Ihre, lief gut, bis iOS 8. Ich habe bemerkt, dass Sie tippen, wenn eine der Lautstärketasten, während der Ton werden soll spielen Sie können dann den Ton hören. Es ist so, als ob der Sound spielt, aber keine Lautstärke hat. Das waren meine Ergebnisse beim Testen auf einem iPhone 5c. Derselbe Code funktioniert auf meinem iPad Air einwandfrei. Mmmm. –

+2

hast du irgendeine lösung gefunden? – iHulk

Antwort

9

Ich habe die Antwort auf mein Problem gefunden, es kann Ihr Problem beheben. Ich ging in die Einstellungen und änderte die Lautstärke des Ringer und Alerts, dies war im Bereich Sounds. Meins wurde aus irgendeinem Grund auf Null gesetzt. Ich wusste nicht, dass AudioServices mit dieser Lautstärke verbunden waren. Für meine Bedürfnisse werde ich wahrscheinlich auf den AVAudioPlayer umsteigen.

+0

Ich habe das an meinem Simulator und meinem Gerät versucht und es hat nichts für mich verändert. –

+0

Ich habe das gleiche Problem auf iOS 9.2 im Jahr 2016. Es wäre schön, die Auflösung zu finden, um den schwereren AVAudioPlayer zu vermeiden. – bitsand

+0

Es funktionierte für mich Ich habe gerade den Schieberegler in Sound-Einstellung geändert. –

2

In meinem Fall war der Ton in Ordnung, aber das iPad war auf Mute. Wischen Sie von unten (Kontrollzentrum) nach oben und entaktivieren Sie die Stummschaltung.

0

Für mich war es der Ring/Silent-Schalter, der umgedreht wurde (der Schalter über den Lautstärketasten). SpriteKit Sounds funktionierten immer noch einwandfrei, so dass dieses Verhalten ziemlich nervig ist.

1

Ich hatte ein ähnliches Problem. Es funktionierte an einem Punkt, aber hatte später aufgehört zu arbeiten.

Ich überprüfte den Code immer wieder und ich googled mein Problem, um zu sehen, ob ich irgendwelche Hinweise finden könnte.

Es stellte sich heraus, dass das Problem einfach dadurch gelöst wurde, dass das Gerät einfach aus- und wieder eingeschaltet wurde!

2

Ich weiß, das ist ein bisschen alt post. Aber ich bin kürzlich auf dieses Problem gestoßen und das ist meine Lösung für das Problem.

Gehen Sie zu settings>sounds>Ringer and alerts. Erhöhen Sie die Lautstärke und versuchen Sie, den Sound wiederzugeben. Wahrscheinlich wird dies funktionieren.

Auch der Code, den Sie verwenden, wird bald veraltet.Verwenden Sie Folgendes.

+(void)playClickSound 
{ 
    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"click_sound.mp3" withExtension:nil]; //filename can include extension e.g. @"bang.wav" 
    if (fileURL) 
    { 
     SystemSoundID theSoundID; 
     OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID); 
     if (error == kAudioServicesNoError) 
     { 
      AudioServicesPlaySystemSoundWithCompletion(theSoundID, ^{ 
       AudioServicesDisposeSystemSoundID(theSoundID); 
      }); 
     } 
    } 
} 
Verwandte Themen