基于Unity的阿里云短信SDK接入流程
- 第一步我们需要去使用阿里云的短信服务
第一步我们需要去使用阿里云的短信服务
1.如果没有注册过,就先去注册阿里云账号,并进行实名认证;
2. 注册完在产品这模块有个短信服务,开通短信服务,然后进入管理控制台;
3. 进入后,在国内消息中添加签名,签名名字自定义,使用场景选择验证码,申请说明自定义;
准备完全后就坐等俩小时(不用俩小时),等审核完毕。
在审核的时候我们接着把下面的操作完成。
4. 在模板管理中相同方式添加模板;
忘了说了,阿里云对短信服务是收费的,首先你得在阿里云上充值一点点钱 ,不要太多。
类似的这个模板也是需要经过审核的,审核时间不长,也就俩小时不到。
模板内容这块使用他们推荐的常用模板库
- 接下来,在审核的过程中,我们去下载短信验证的SDK(我用的是老版的SDK,现在出了个新版);
(1)点开下面的帮助文档,在里面选择老版SDK下载
(2)下载完解压,开始创建Unity工程,新建一个Unity工程
dysms_net\net\api_demo\net2.0
在这个net2.0文件夹下有俩个dll文件
在上一级目录也有同名的俩个dll文件,但是外部的是支持.net4以上的,在内部的是支持.net3.5的
将这俩个dll文件导入新建的unity工程,位置没有固定
然后创建一个C#脚本 我命名为AliyunSMS,不用继承MonoBehaviour
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AliyunSMS
{
//产品名称:云通信短信API产品,开发者无需替换
const string product = "Dysmsapi";
//产品域名,开发者无需替换
const string domain = "dysmsapi.aliyuncs.com";
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
const string accessKeyId = "LTAIpmeh3BTq603D";//-----(1)操作1
const string accessKeySecret = "hl76uQ8DY169SXsxsAMXUtWUoO1OlE";//---------(2)操作2
public static SendSmsResponse sendSms(string iphone,string varcode)
{
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest();
SendSmsResponse response = null;
try
{
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request.PhoneNumbers = iphone;
//必填:短信签名-可在短信控制台中找到
request.SignName = "XuHan";//-------(3)操作3
//必填:短信模板-可在短信控制台中找到
request.TemplateCode = "SMS_163725001";//-------(4)操作4
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.TemplateParam = "{\"code\":\""+varcode+"\"}";
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.OutId = "yourOutId";
//请求失败这里会抛ClientException异常
response = acsClient.GetAcsResponse(request);
}
catch (ServerException e)
{
Debug.Log(e.ErrorCode);
}
catch (ClientException e)
{
Debug.Log(e.ErrorCode);
}
return response;
}
}
操作1:此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
const string accessKeyId = “LTAIpmeh3BTq603D”;//-----(1)操作1
将LTAIpmeh3BTq603D替换成自己的accessKeyId
操作2: 这里的accessKeySecret需要自己绑定手机认证才能显示,将代码中的accessKeySecret替换成自己的
操作3: //必填:短信签名-可在短信控制台中找到
request.SignName = “XuHan”;//-------(3)操作3
将这个SignName 替换成自己的签名名称
操作4: //必填:短信模板-可在短信控制台中找到
request.TemplateCode = “SMS_163725001”;//-------(4)操作4
将TemplateCode 替换
- 测试短信验证
简单的创建一个场景,一个输入手机号的输入框,一个发送按钮,在按钮上添加一个脚本
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;
public class SendMessage : MonoBehaviour
{
InputField inputField;
void Start()
{
inputField = GameObject.Find("InputSMS").GetComponent<InputField>();
transform.GetComponent<Button>().onClick.AddListener(SendMsg);
//aliyunSMS = GameObject.FindObjectOfType<AliyunSMS>();
}
public void SendMsg() {
if (inputField.text == "" || inputField.text == null) {
Debug.Log("请输入手机号");
return;
}
string patten = @"^1\d{10}$";//正则表达式 手机号第一位为1,后面十位都是数字
if (Regex.IsMatch(inputField.text,patten))
{
Debug.Log("请输入正确的格式的手机号");
}
string code = "";
int a = Random.Range(000000, 999999);
code += a.ToString();
AliyunSMS.sendSms(inputField.text, code);
}
}
AliyunSMS.sendSms(inputField.text, code);
这句代码传的参数是手机号(输入框内的值),code是随机的六位数
接下来就可以发送短信了。