             self.restoreOriginalAudioSetup()
             _ = try? self.audioSession.setActive(false, withOptions: .NotifyOthersOnDeactivation)
         }
+    }
+
+    func getRingbackUri(_type: String) -> NSURL? {
+        let fileBundle: String = "incallmanager_ringback"
+        let fileBundleExt: String = "mp3"
+        let fileSysWithExt: String = "vc~ringing.caf"
+        let fileSysPath: String = "/System/Library/Audio/UISounds"
+        let type = (_type == "" || _type == "_DEFAULT_" ? fileSysWithExt : _type) // --- you can't get default user perfrence sound in ios
+        return self.getAudioUri(type, fileBundle, fileBundleExt, fileSysWithExt, fileSysPath, &self.bundleRingbackUri, &self.defaultRingbackUri)
+    }
+
+    func getBusytoneUri(_type: String) -> NSURL? {
+        let fileBundle: String = "incallmanager_busytone"
+        let fileBundleExt: String = "mp3"
+        let fileSysWithExt: String = "ct-busy.caf" //ct-congestion.caf
+        let fileSysPath: String = "/System/Library/Audio/UISounds"
+        let type = (_type == "" || _type == "_DEFAULT_" ? fileSysWithExt : _type) // --- you can't get default user perfrence sound in ios
+        return self.getAudioUri(type, fileBundle, fileBundleExt, fileSysWithExt, fileSysPath, &self.bundleBusytoneUri, &self.defaultBusytoneUri)
+    }
+
+    func getRingtoneUri(_type: String) -> NSURL? {
+        let fileBundle: String = "incallmanager_ringtone"
+        let fileBundleExt: String = "mp3"
+        let fileSysWithExt: String = "Opening.m4r" //Marimba.m4r
+        let fileSysPath: String = "/Library/Ringtones"
+        let type = (_type == "" || _type == "_DEFAULT_" ? fileSysWithExt : _type) // --- you can't get default user perfrence sound in ios
+        return self.getAudioUri(type, fileBundle, fileBundleExt, fileSysWithExt, fileSysPath, &self.bundleRingtoneUri, &self.defaultRingtoneUri)
     }
 
     func getAudioUri(_type: String, _ fileBundle: String, _ fileBundleExt: String, _ fileSysWithExt: String, _ fileSysPath: String, inout _ uriBundle: NSURL!, inout _ uriDefault: NSURL!) -> NSURL? {

        }
    }

    func getBusytoneUri(_type: String) -> NSURL? {
        let fileBundle: String = "incallmanager_busytone"
        let fileBundleExt: String = "mp3"
        let fileSysWithExt: String = "ct-busy.caf" //ct-congestion.caf
        let fileSysPath: String = "/System/Library/Audio/UISounds"
        let type = (_type == "" || _type == "_DEFAULT_" ? fileSysWithExt : _type)
        return self.getAudioUri(type, fileBundle, fileBundleExt, fileSysWithExt, fileSysPath, &self.bundleBusytoneUri, &self.defaultBusytoneUri)
    }

    func startBusytone(busytoneUriType: String) -> Bool {
        // you may rejected by apple when publish app if you use system sound instead of bundled sound.
        print("startBusytone()")
        do {
            if self.mBusytone != nil {
                if self.mBusytone.playing {
                    return false
                } else {
                    self.stopBusytone()
                }
            }
            let busytoneUri: NSURL? = getBusytoneUri(busytoneUriType)
            if busytoneUri == nil {
                print("no available busytone")
                return false
            }
            //self.storeOriginalAudioSetup()

    }

}
