基于Unity的阿里云短信SDK接入流程

  • 第一步我们需要去使用阿里云的短信服务


第一步我们需要去使用阿里云的短信服务

unity 云存储空间_短信接入

1.如果没有注册过,就先去注册阿里云账号,并进行实名认证;

2. 注册完在产品这模块有个短信服务,开通短信服务,然后进入管理控制台;

unity 云存储空间_短信接入_02


3. 进入后,在国内消息中添加签名,签名名字自定义,使用场景选择验证码,申请说明自定义;

准备完全后就坐等俩小时(不用俩小时),等审核完毕。

在审核的时候我们接着把下面的操作完成。

unity 云存储空间_unity_03


unity 云存储空间_开发者_04


4. 在模板管理中相同方式添加模板;

忘了说了,阿里云对短信服务是收费的,首先你得在阿里云上充值一点点钱 ,不要太多。

类似的这个模板也是需要经过审核的,审核时间不长,也就俩小时不到。

unity 云存储空间_短信接入_05


模板内容这块使用他们推荐的常用模板库

unity 云存储空间_unity_06

  1. 接下来,在审核的过程中,我们去下载短信验证的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

unity 云存储空间_unity_07


操作2: 这里的accessKeySecret需要自己绑定手机认证才能显示,将代码中的accessKeySecret替换成自己的

unity 云存储空间_unity_08


操作3: //必填:短信签名-可在短信控制台中找到

request.SignName = “XuHan”;//-------(3)操作3

将这个SignName 替换成自己的签名名称

unity 云存储空间_SDK_09


操作4: //必填:短信模板-可在短信控制台中找到

request.TemplateCode = “SMS_163725001”;//-------(4)操作4

将TemplateCode 替换

unity 云存储空间_短信接入_10

  1. 测试短信验证
    简单的创建一个场景,一个输入手机号的输入框,一个发送按钮,在按钮上添加一个脚本
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是随机的六位数
接下来就可以发送短信了。