AVCaptureDevice.requestAccessForMediaType never pops up window and always return false
Problem solved. It seems that when we upgrade from iOS 8 to iOS 9, it has a new property in info.plist which is Bundle Display Name. Set the name to your product name if it is null, or the system will never know what app is asking for a permission