Skip to content

Instantly share code, notes, and snippets.

@gimdongwoo
Last active May 25, 2016 08:32
Show Gist options
  • Save gimdongwoo/ab0413c5628263d5a57c80844794b3c8 to your computer and use it in GitHub Desktop.
Save gimdongwoo/ab0413c5628263d5a57c80844794b3c8 to your computer and use it in GitHub Desktop.
Titanium Send SMS feature using native module ( https://github.com/omorandi )
// Special thanks to omorandi.
// Android : https://github.com/omorandi/TiAndroidSMS
// iOS : https://github.com/omorandi/TiSMSDialog
// need q.js https://github.com/kriskowal/q
var Q = require("q");
function makeSMSrecivers() {
//
// make smsReceivers
//
return [];
}
function smsSend() {
var smsReceivers = $.msgInput.value;
var messageBody = makeSMSrecivers();
if (OS_IOS) {
smsSendGroupIOS({ messageBody : messageBody , receivers : smsReceivers });
} else {
smsSendAndroidQ(0, messageBody, smsReceivers).then(function(restult) {
// success
}, function(error) {
// fail
});
}
}
// iOS 용 SMS 멀티 수신자
function smsSendGroupIOS(smsParam) {
if (OS_IOS) {
var smsMod = require("com.omorandi");
Ti.API.debug("module is => " + smsMod);
smsDialog = smsMod.createSMSDialog({
recipients: smsParam.receivers,
messageBody: smsParam.messageBody,
barColor: '#54EE92'
});
smsDialog.addEventListener('complete', function(e){
Ti.API.debug("Result: ", e.resultMessage, ' / ', e);
var result = 'unexpected result...';
switch (e.result) {
case smsDialog.SENT:
//
break;
case smsDialog.FAILED:
//
break;
case smsDialog.CANCELLED:
//
break;
}
smsDialog.removeEventListener('complete', arguments.callee);
});
smsDialog.open({animated: true});
}
}
// repeat
function smsSendAndroidQ(idx, messageBody, smsReceivers) {
Ti.API.debug("smsSendAndroidQ function idx : ", idx);
if (idx > smsReceivers.length -1) { return Q(true); }
return smsSendAndroid({ phone : smsReceivers[idx] , messageBody : messageBody }).then(function(result) {
return smsSendAndroidQ(idx+ 1, messageBody, smsReceivers);
}).fail(function(error) {
return Q.reject(error);
});
}
function smsSendAndroid(smsParam) {
var deferred = Q.defer();
var params = {
phoneNumber : smsParam.phone,
messageBody : smsParam.messageBody
};
if (OS_ANDROID) {
var smsMod = require('ti.android.sms');
Ti.API.debug("module is => " + smsMod);
smsMod.addEventListener('complete', function(e){
Ti.API.debug('Result: ', (e.success?'success':'failure'), ' msg: ', e.resultMessage, ' / ', e);
if (e.success) {
deferred.resolve(e);
} else {
deferred.reject(e);
}
smsMod.removeEventListener('complete', arguments.callee);
});
Ti.API.debug('smsSendAndroid :', params.phoneNumber, '/ msg:', params.messageBody);
smsMod.sendSMS(params.phoneNumber, params.messageBody);
}
return deferred.promise;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment