SMS 未使用 Branch.io 和 intl-tel-input 发送到国际号码
Posted
技术标签:
【中文标题】SMS 未使用 Branch.io 和 intl-tel-input 发送到国际号码【英文标题】:SMS not sending to intl numbers using Branch.io and intl-tel-input 【发布时间】:2016-08-31 16:15:31 【问题描述】:我的表格只会发送到 10 位数的美国号码。一旦选择了国家,我想发送到国际号码。查看Intl-Tel-Input 文档后,可能需要此代码,但我没有任何运气:myInput.val(myInput.intlTelInput("getNumber"));
这里是Branch.io text me the app doc,主要是下面的代码,更新使用phoneSMS
。
如何使用 branch.io 和 Intl-Tel-Input 发送国际号码?
<script type="text/javascript">
(function(b,r,a,n,c,h,_,s,d,k)if(!b[n]||!b[n]._q)for(;s<_.length;)c(h,_[s++]);d=r.createElement(a);d.async=1;d.src="https://cdn.branch.io/branch-latest.min.js";k=r.getElementsByTagName(a)[0];k.parentNode.insertBefore(d,k);b[n]=h)(window,document,"script","branch",function(b,r)b[r]=function()b._q.push([r,arguments]),_q:[],_v:1,"addListener applyCode banner closeBanner creditHistory credits data deepview deepviewCta first getCode init link logout redeem referrals removeListener sendSMS setIdentity track validateCode".split(" "), 0);
branch.init('YOUR-BRANCH-KEY');
function sendSMS(form)
var phone = form.phoneSMS.value;
var linkData =
tags: [],
channel: 'Website',
feature: 'TextMeTheApp',
data:
'foo': 'bar'
;
var options = ;
var callback = function(err, result)
if (err)
alert("Sorry, something went wrong.");
else
alert("SMS sent!");
;
branch.sendSMS(phone, linkData, options, callback);
form.phone.value = "";
</script>
<form onsubmit="sendSMS(this); return false;">
<input type="tel" name="phoneSMS" id="phoneSMS">
<input type="submit"/>
</form>
国际电话输入插件:
<script type="text/javascript" src=" site.baseurl js/intlTelInput.js"></script>
<script>
$("#phoneSMS").intlTelInput(
utilsScript: " site.baseurl /js/utils.js"
);
</script>
【问题讨论】:
【参考方案1】:来自 Branch.io 的 Alex 在这里:Branch 确实支持具有 text-me-the-app 功能的国际电话号码,我们希望很快能够集成像 Intl-Tel-Input 这样的国家/地区选择器。
目前,您需要手动附加国家代码和 +
。我们在我们的文档here 中有一个部分对此进行了描述(它有点被埋没了......对不起!)。基本上你需要像这样用var phone = "+91" + form.phone.value;
更新那个sn-p:
<script type="text/javascript">
(function(b,r,a,n,c,h,_,s,d,k)if(!b[n]||!b[n]._q)for(;s<_.length;)c(h,_[s++]);d=r.createElement(a);d.async=1;d.src="https://cdn.branch.io/branch-latest.min.js";k=r.getElementsByTagName(a)[0];k.parentNode.insertBefore(d,k);b[n]=h)(window,document,"script","branch",function(b,r)b[r]=function()b._q.push([r,arguments]),_q:[],_v:1,"addListener applyCode banner closeBanner creditHistory credits data deepview deepviewCta first getCode init link logout redeem referrals removeListener sendSMS setIdentity track validateCode".split(" "), 0);
branch.init('YOUR-BRANCH-KEY');
function sendSMS(form)
var phone = "+91" + form.phone.value;
var linkData =
tags: [],
channel: 'Website',
feature: 'TextMeTheApp',
data:
'foo': 'bar'
;
var options = ;
var callback = function(err, result)
if (err)
alert("Sorry, something went wrong.");
else
alert("SMS sent!");
;
branch.sendSMS(phone, linkData, options, callback);
form.phone.value = "";
</script>
理论上,您应该能够将 Intl-Tel-Input 的输出输入到该变量中。
如果您确实做到了,请告诉我!我们很乐意将其直接整合到 SDK 中。
【讨论】:
【参考方案2】:在号码前加上国际前缀的最简单方法是在 sendSMS()
函数中替换 var phone = form.phoneSMS.value
来更新它以向 intlTelInput 本身询问号码 - 它为您提供国际格式。
例子:
var phone = $('#phoneSMS').intlTelInput("getNumber")
如需进一步参考,请查看 intlTelInput 的公共方法。
【讨论】:
以上是关于SMS 未使用 Branch.io 和 intl-tel-input 发送到国际号码的主要内容,如果未能解决你的问题,请参考以下文章
Android 调试应用程序未使用 branch.io 打开
branch.io loadRewards - 无法在未调用 Looper.prepare() 的线程内创建处理程序
react native 中的 branch.io 自定义事件未触发奖励规则