2016-11-08 4 views
2

Ich habe versucht, einen benutzerdefinierten Sound für Benachrichtigungen auf iOS zu implementieren.iOS Ich kann keinen benutzerdefinierten Sound für Remote-Benachrichtigungen abspielen

Laut Apples Dokumentation in Beispiel 3 here. Alles, was wir tun müssen, ist, dass die Push-Benachrichtigung Nutzlast so etwas wie zu gewährleisten sein soll: im Programm-Paket

{ 
"aps" : { 
     "alert" : "You got your emails.", 
     "badge" : 9, 
     "sound" : "bingbong.aiff" 
    } 
} 

Und bingbong.aiff platziert werden muss.

Auch wenn die App im aktiven Zustand wurde mir geraten, den folgenden Code hinzuzufügen:

- (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    if (application.applicationState == UIApplicationStateActive) 
    { 
     NSString *path = [[NSBundle mainBundle] pathForResource:@"bingbong" ofType:@"aiff"]; 
     theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]error:NULL]; 

     theAudio.delegate = self; 
     [theAudio play]; 
    } 
} 

"bingbong.aiff" platziert in "SupportingFiles"

I donot den benutzerdefinierten Sound für Remote-Benachrichtigung erhalten nach wie vor.

Ich bin schon durch andere SO Fragen gegangen, die ähnlich sind, aber diese sind nicht anders als das, was ich mache.

  1. How to play custom sound file when user get push notification?

  2. Custom sounds in remote notifications iOS 10, swift 3

  3. Change push notification sound

+0

Ihr Skript zeigen, wie Sie eine Benachrichtigung vom Server feuern. – vaibhav

+0

Die Funktion 'didReceiveRemoteNotification' wird aufgerufen, wenn die App geöffnet ist und du Push erhältst, hörst du Sound, wenn die App geöffnet ist? – iphonic

+0

@iphonic No Ich höre keinen Ton, wenn die App geöffnet ist. Der Standardsound wird wiedergegeben, wenn er im Hintergrund ist. – Ichthyocentaurs

Antwort

4

für Standard-Ton:

Nach der Apple-Dokumentation & Richtlinien, die Sie spielen Standard klingen muss „Default senden "Wert in der Sounddatei. Sonst wird auch kein Standard-Sound abgespielt.

Für individuellen Klang:

Sie müssen Namen benutzerdefinierten Tondatei an Ort und Stelle übergeben von default in Ihrem php script **.

  1. Für benutzerdefinierte Tondatei müssen in Ihrem Xcode Projekt in Ressourcen vorhanden sein.
  2. Stellen Sie sicher, dass die Audiodatei nicht länger als 30 Sekunden dauert. Sonst wird Standardton wiedergegeben.
  3. Und Sie müssen den folgenden Schlüssel UILocalNotificationDefaultSoundName innerhalb .plist Datei hinzufügen. Siehe Bild unten:

enter image description here

+0

wird eine .mp3-Datei auch in diesem Fall funktionieren, habe ich das obige versucht, funktioniert aber nicht. – Ichthyocentaurs

+0

es funktioniert gut mit mir '.waw' wird hier unterstützt oder Sie können versuchen, einige Erweiterungen, die von Apple unterstützt, wahrscheinlich' .mp3' nicht unterstützt und überprüfen Sie bitte Ihre PHP-Skript, die möglicherweise Probleme verursachen. – vaibhav

+0

Ist etwas falsch mit der Art, wie ich die Datei in mein Projekt platziere? Ich habe gerade den Eintrag "UILocalNotificationDefaultSoundName" - String - "consumound.aiff" hinzugefügt. Ich habe die Sound-Datei in Xcode zum Ordner Supporting Files über den Menüpunkt "Datei"> "Dateien zum Projekt hinzufügen" hinzugefügt. – Ichthyocentaurs

2

Entfernen Sie die AVPlayer Sachen in didReceiveRemoteNotification.

Stellen Sie sicher:

  • Die Klänge Länge ist < 25 Sekunden
  • Die Datei wirklich in einem der unterstützten Formate (AIFF, WAV, CAF)
  • Die Datei existiert wirklich whitin dein Bündel (Copy Bundle Ressourcen)
  • Sie für Push-Benachrichtigungen registriert:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
        let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 
        UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
        UIApplication.sharedApplication().registerForRemoteNotifications() 
    
        return true 
    } 
    
  • Der Name entspricht genau den Dateinamen:

    { 
        "aps" : { 
         "alert" : "message", 
         "badge" : 1, 
         "sound" : "name.aiff" 
        } 
    } 
    
+0

Ich entfernte den AVPlayer-Code und hatte bereits die Berechtigung in applicationDidFinishLaunching:, aber immer noch keine Auflösung – Ichthyocentaurs

Verwandte Themen