2016-02-12 92 views
4

我試圖在離子應用程序中爲我的推送通知實現自定義聲音。 我的聲音文件複製到www /也設置插件選項如下使用離子推送通知的自定義聲音

//In app.run 
$ionicPush.init({ 
     "debug": true, 
     "onNotification": function(notification){ 
     $cordovaDialogs.alert(notification.message, 'Notification', 'OK').then(function(){ 
      console.log(notification); 
     }); 
     } 
     "onRegister": function(data) { 
     console.info("New device registered with token "+data.token); 
     } 
     "pluginConfig": { 
     "ios": { 
      "badge": true, 
      "sound": true 
     }, 
     "android": { 
      "iconColor": "#343434" 
     } 
     } 
     }); 

//In my main controller - 
    $scope.saveUserDeviceReg = function(data){ 
    var ionicUser = Ionic.User.current(); 
    if(!ionicUser.id){ 
     ionicUser.id = $scope.user.userId; 
    } 
    ionicUser.set('name', $scope.user.name); 
    ionicUser.set('image', $scope.user.profilePic); 
    ionicUser.set('email', $scope.user.email); 
    $ionicPush.addTokenToUser(ionicUser); 
    ionicUser.save(); 
    if($scope.user.devices){ 
     $scope.user.devices[data.token] = true; 
     $scope.user.$save().then(function(success){ 
     console.log("User device saved"); 
     },function(error){ 
     console.error("Error saving user device"); 
     }); 
    } 
    else{ 
     var devices = {}; 
     devices[data.token] = true; 
     $scope.user.devices = devices; 
     $scope.user.$save().then(function(success){ 
     console.log("User device updated"); 
     },function(error){ 
     console.error("Error updating user device"); 
     }); 
    } 
    }; 
​ 
    $ionicPush.register($scope.saveUserDeviceReg); 

我從一個服務器的Node.js

request({ 
      url: "https://push.ionic.io/api/v1/push", 
      method: "POST", 
      json: true, 
      body: { 
       "tokens":tokens, 
       "notification": { 
        "alert": message.from + " : '" + message.text 
       } 
      }, 
      headers: { 
       'Authorization': 'Basic ' + btoa(IONIC_PRIVATE_API_KEY + ":"), 
       'X-Ionic-Application-Id': IONIC_APP_ID 
      } 
     }, function (error, response, body) { 
      console.log(body); 
     }); 

我想玩存儲自定義音頻發送推送通知在www/

回答

5

隨着科爾多瓦CLI 7,您可以使用的資源標記,將聲音複製到項目http://cordova.apache.org/docs/en/7.x/config_ref/index.html#resource-file

對於安卓

<resource-file src="sound.mp3" target="res/wav/sound.mp3" /> 

爲iOS:

<resource-file src="sub.caf"/> 

老答案:

要播放自定義聲音,聲音文件名必須從在推送通知數據的服務器

在iOS上的聲音文件必須在應用程序的項目,而不是WWW

Android上的聲音文件必須在res/raw文件夾,而不是WWW

https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#sound https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#sound-1

+0

因此,在iOS中,我將文件('sound_danger.caf')放置在'platforms/ios'中,但它不起作用。服務器發送'「ios」:{「sound」:「sound_danger.caf」},但它會播放默認聲音。你知道什麼是錯誤嗎? – 27leaves

+0

您必須將其放入xcode項目中,打開.xcodeproj並將聲音拖入其中或使用掛鉤將其複製,或使用資源文件標籤複製它的自定義插件 – jcesarmobile

+0

沒有res /在離子建立平臺文件夾內原始。你是否可能指的是實際安裝android文件夾的res/raw? –