In our application we use PhoneGap to interact with the device. We've implemented a custom plugin in PhoneGap to play the default tick sound (fastest way to play sounds possible).
As for the Sencha part, we've overriden the onTap function of Ext.Button to send a signal to PhoneGap to play the tick sound.
Override buttons to play the default sound
Code:
// Adds a sound to button tap
Ext.define('Enhancements.Button', {
override: 'Ext.Button',
onTap: function(e) {
if (this.getDisabled()) {
return false;
}
common.playAlertSound();
this.fireAction('tap', [this, e], 'doTap');
}
});
Objective C for playing the iOS default sound
Code:
- (void) playAlertSound:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options {
AudioServicesPlayAlertSound(0x450);
}
Feel free to use the code above in your own projects.
Two questions:- Is this the proper way to add the common.playAlertSound invoke to all buttons?
- In some situations we have quite a lot of logic going on after you tap on a button. This causes load to the browser and therefore delaying the tick sound. How could I solve this? Perhaps delay the actual action that is called on button tap?