2012-06-27 8 views
7

Próbuję uzyskać niestandardowy dźwięk działający na UILocalNotification, a ja po prostu nie otrzymuję żadnego dźwięku. Jeśli używam UILocalNotificationDefaultSoundName, rzeczywiście otrzymuję dźwięk domyślny, ale gdy zostanie określony dźwięk niestandardowy, nie ma dźwięku, tylko wiadomość. Dźwięk jest mniejszy niż 30 sekund i jest w odpowiednim formacie, o ile wiem. Oto zrzut ekranu z informacją Plik: Niestandardowy dźwięk ULEPSZENIA w systemie iOS nie jest odtwarzany (prawdopodobnie powiązany z aktualizacją Xcode).

Mam inspekcji katalog .app w DerivedData katalogu Xcode za, a alarm.caf plik znajduje się w katalogu głównym aplikacji, które wierzę, że to oznacza, w pakiecie (prawda?).

Jestem prawie pewien, że działało to jakiś czas temu, i od tego czasu zaktualizowałem Xcode. Może to podpowiedź?

Próbowałem również usunięcie/ponowne zainstalowanie/ponowne uruchomienie, jak wspomniano w innych odpowiedziach. Jak widać, najpierw dzwonię pod numer cancelAllLocalNotifications.

Czy ktoś ma pojęcie, co może być nie tak?

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
NSLog(@"installing alarm"); 
[arguments pop]; // name 
[arguments pop]; // title 
alarm.alertBody = [arguments pop]; 
alarm.fireDate = [[NSDate date] addTimeInterval:[[arguments pop] intValue]/1000]; 
//alarm.soundName = UILocalNotificationDefaultSoundName; 
alarm.soundName = @"alarm.caf"; 

[[UIApplication sharedApplication] scheduleLocalNotification:alarm]; 

Odpowiedz

3

Twój kod wydaje się być dobry.

Spróbuj wyczyścić projekt, odinstaluj aplikację z urządzenia/symulatora, a następnie zainstaluj ją ponownie. Może to pomóc może :)

+1

ha pracuje. pracował dla mnie. – GraehamF

0

upewnij się, że iPhone nie jest w trybie cichym (bo kod wydaje się być dobrze)

prostu sprawdzić przycisk z boku telefonu iPhone

+0

Jak wskazuje fakt, że UILocalNotificationDefaultSoundName zadziałało i wygenerowało dźwięk, tryb cichy nie stanowił problemu :) –

0

OK więc oto co się stało. Nie pamiętam, jak aplikacja obsługuje samo powiadomienie, jeśli nadal działa. Mój kod wyświetlał tylko UIAlertView i nie odtwarzał dźwięku. Nie jestem pewien, dlaczego zadziałał z domyślnym dźwiękiem. W każdym przypadku, dodałem kodu podobnego do mojego AppDelegate:

- (void)application:(UIApplication *)application 
didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    NSLog(@"didReceiveLocalNotification"); 
    if (application.applicationState == UIApplicationStateActive) { 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MarkMyTime" 
     message:notification.alertBody 
     delegate:self cancelButtonTitle:@"OK" 
     otherButtonTitles:nil]; 
    NSString *soundFilePath = [[NSBundle mainBundle] 
     pathForResource:notification.soundName ofType:nil]; 
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 
    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil]; 
    [fileURL release]; 
    player.delegate = self; 
    [player prepareToPlay]; 
    [player play]; 
    [alertView show]; 
    if (alertView) { 
     [alertView release]; 
    } 
    } 
} 

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
    NSLog(@"Releasing player"); 
    [player release]; 
} 

To pokaże UIAlertView i odtwarzanie dźwięku na obiekcie powiadomień. Musisz również dodać interfejs AVAudioPlayerDelegate do AppDelegate, aby móc przypisać delegat do odtwarzacza. Myślę, że jeśli używasz ARC, ten kod może być nieco uproszczony.

@interface AppDelegate : PhoneGapDelegate <AVAudioPlayerDelegate> { 

Nie jestem pewien, czy jest to najlepsze podejście, więc nie krępuj się kurant z jakichkolwiek ulepszeń.

2

Nie znam powodu (a także nie czytałem dokumentacji), właśnie włączyłem właściwość akcji notification setHasAction:YES i dźwięk zaczął grać.

0

Może nie dodajesz pliku dźwiękowego (* .caf) do projektu Xcode: Build Phases/Copy Bundle Resources.

+2

To nie jest pełne rozwiązanie i nie powinno być publikowane jako odpowiedź. użyj komentarzy, aby zasugerować możliwe korekty problemu. – andr

0

kod jest dobry, ale sprawdź iPhonie ustawienia ustawienie -> Centrum powiadomień -> swoją aplikację -> Dźwięk -> "On" dźwięk ma być "On"

Tak więc, aby to umożliwić , sprawdzone Inter App audio na możliwości w cele zastosowania i to było od Możliwości w Inter-app dźwiękiem zmienić to on

następnie lokalny dźwięk powiadomienia Inshallah :)

+1

powinieneś opublikować to jako komentarz. – Pawan

+0

Twój kod nie działa dla mnie –

Powiązane problemy