2014-11-17 146 views
11

設備在iOS 8.1上運行iOS 8.1推送通知無聲音

我正在使用xCode 6.1編譯應用程序。

這是爲推動

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 
{ 
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
    [application registerForRemoteNotifications]; 
} 
else 
{ 
    [application registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; 
} 

它正常工作與服務器應用註冊登記的代碼。

PEM文件也正確完成,因爲我可以使用沙盒APN將推送發送到我的設備。

當我打印我的JSON有效載荷從didReceiveRemoteNotification我得到這個:

{ 
    aps =  { 
     alert = "Test Push Message"; 
    }; 
} 

的問題是,當我收到我的push(即使在設備設置爲響亮的),不能播放聲音。

據我所知,如果你沒有在JSON載荷中指定聲音,它應該播放默認的OS聲音。

在我手機上的應用程序通知設置中,聲音默認啓用,因爲當我註冊時,我指定UIUserNotificationTypeSound

任何人都遇到過這個問題?

+0

你不應該檢測的版本,如:'如果([[[的UIDevice currentDevice] systemVersion]的floatValue]> = 8.0)'但像而檢查類是可用的:'如果([ UIUserNotificationSettings類])' – rckoenes

回答

36

根據Apple's documentation需要指定default,如果你想默認的推送通知要播放:

在應用程序中捆綁了聲音文件的名稱。該文件中的聲音是 作爲警報播放。如果聲音文件不存在或默認值爲 指定爲該值,則播放默認警報聲。音頻 必須是與系統聲音兼容的音頻數據格式之一;有關詳細信息,請參閱準備自定義警報聲音。

最終的JSON輸出:

{ 
    "aps" :  { 
     "alert" : "Test Push Message", 
     "sound" : "default" 
    }; 
} 
+0

是的,我得到了聲音和振動這種方式..但我只想聲音。沒有震動..我怎麼辦?預先感謝x ... –

+0

鏈接的文檔不再存在。 – qqx

9

您應該修改服務器JSON輸出到這一點。 default它是您手機上通知的聲音類型。

{ 
    "aps": { 
     "alert": "test", 
     "sound": "default" 
    } 
} 
+0

是的,我得到了聲音和振動這種方式..但我只想聲音。沒有震動..我怎麼辦?預先感謝x ... –

3

用於在我們的應用程序收到推送通知時播放聲音您的json必須包含聲音屬性。所以JSON這樣

{ 
    "aps":{ 
    "alert" :"your test message", 
    "sound":"default" 
     }; 
} 
+0

你應該格式化代碼,以便它更好的可讀性。 – etalon11

+0

@ etalon11我會記住的。謝謝。 –