SMS

参数类型:
发送短信初始化一次
发送成功,收不到。 客户端与代理服务器端之间时间不一致。不一致,如果不调整,以代理服务器端时间为准。
批量发送只支持多个用户发送同一条短信。
短信类型:
短信SMID
尾巴srcID
PDU编码发送:
PDU编码方式是目前国内短信所采用的通用编码方式,多数手机、短信猫等设备均支持该编码方式。

短信设备使用PDU编码方式发送短信时,需要将相应的短信中心号码,短信接收方号码,短信内容及一些必要的设置使用PDU进行编码才能正常的发送。

短信中心号编码

/// <summary>
        /// 将中心号码编码
        /// </summary>
        /// <param name="strValue"></param>
        /// <returns></returns>
        private string EncodCenterNumber(string centerNumber)
        {
            string resultString = "0891";
            //判断是否为空
            if (string.IsNullOrEmpty(centerNumber))
            {
                return string.Empty;
            }
            //取出+
            if (centerNumber.Substring(0, 1) == "+")
            {
                centerNumber = centerNumber.Substring(1, centerNumber.Length - 1);
            }
            //补位
            if (System.Math.IEEERemainder(double.Parse(centerNumber.Length.ToString()), 2) != 0)
            {
                centerNumber = centerNumber + "F";
            }
            //奇偶换位
            for (int i = 0; i < centerNumber.Length; i = i + 2)
            {
                resultString = resultString + centerNumber.Substring(i + 1, 1) + centerNumber.Substring(i, 1);
            }
            return resultString;
        }

该方法将传递的短信中心号码进行相应的处理,返回经编码后的字符串。编码过程中,首先去除传递的短信中心号码的“+”,根据需要对不足偶数位的字符串使用“F”进行补足,之后对不足的具有偶数长度的字符串进行奇偶换位。

接收方短信号码编码

/// <summary>
        /// 将电话号码编码
        /// </summary>
        /// <param name="phoneNumber">电话号码</param>
        /// <returns></returns>
        private string EncodPhoneNumber(string phoneNumber)
        {
            string resultString = string.Empty;
            //判断是否为空
            if (phoneNumber == "")
            {
                return "";
            }
            //取出+
            if (phoneNumber.Substring(0, 1) == "+")
            {
                phoneNumber = phoneNumber.Substring(1, phoneNumber.Length - 1);
            }
            //补位
            if (System.Math.IEEERemainder(double.Parse(phoneNumber.Length.ToString()), 2) != 0)
            {
                phoneNumber = phoneNumber + "F";
            }
            //奇偶换位
            for (int i = 0; i < phoneNumber.Length; i = i + 2)
            {
                resultString = resultString + phoneNumber.Substring(i + 1, 1) + phoneNumber.Substring(i, 1);
            }           
            return resultString;
        }     

接收方号码的编码与短信中心号的编码方式类同,进行去“+”,位数补足,奇偶换位。

短信内容编码

/// <summary>
        /// 将短信内容编码
        /// </summary>
        /// <param name="messageString">信息内容</param>
        /// <returns></returns>
        private string EncodMessage(string messageString)
        {
            int messageLength = messageString.Length * 2;
            string resultString = messageLength.ToString("X2");
            //编码信息内容
            Byte[] bytes = new Byte[1024];
            string strValue1 = messageString;
            System.Text.Encoding.Unicode.GetBytes(strValue1, 0, strValue1.Length, bytes, 0);
            for (int i = 0; i < bytes.Length; i = i + 2)
            {
                if (bytes == 0 && bytes == 0)
                {
                    i = bytes.Length;
                }
                else
                {
                    resultString = resultString + bytes.ToString("X2") + bytes.ToString("X2");
                }
            }           
            return resultString;
        }

在此使用的编码方式比较简单,主要使用unicode的编码方式,淡然还有utf7,utf8的编码方式。编码时将短信内容进行unicode编码,将unicode编码转化为十六进制编码,之后进行相应的奇偶换位。

编码结果合并

/// <summary>
        /// 将要发送的信息组合
        /// </summary>
        /// <param name="centerNumber">消息中心号码</param>
        /// <param name="phoneNumber">接收号码</param>
        /// <param name="messageString">信息内容</param>
        /// <returns></returns>
        public string GetSendMsg(string centerNumber, string phoneNumber, string messageString)
        {
            string resultString = string.Empty;           
            int messageLength = messageString.Length * 2 + 15;           
            resultString = messageLength.ToString() + "\x00d";
            //信息中心号码
            resultString = resultString + EncodCenterNumber(centerNumber);
            //手机号码
            resultString = resultString + "11000D91" + EncodPhoneNumber(phoneNumber) + "000800";
            //短信内容
            resultString = resultString + EncodMessage(messageString);
            resultString = resultString + "\x00d" + "\x01a";
            return resultString;
        }

要将经过编码的号码机内容进行合并,生成发送所需要的PDU发送字符串。合并当中加入了一些表要的设置,因只用于发送国内短信,基本设置使用固定值。

      WAP PUSH 又叫做服务信息或推入信息,是一种特殊格式的短信,接收免费。WAP 就像因特网,是一个内容丰富的网络,用户如何找到自己喜欢的站点,如何在一个站点中找到自己喜欢的业务,往往需要花上很长的一段时间。而WAP PUSH 可以将某一站点或某一业务的链接通过短信发送到支持WAP PUSH 功能的手机上,这样您只需要阅读这条短信(服务信息),打开短信中的链接,就可以直接访问业务了。因此,WAP PUSH 实现了短信和WAP业务的结合,节省了您寻找业务的时间,方便您直接找到并使用自己喜欢的业务。

WAP-PUSH(以下简称PUSH)

      WAP PUSH又叫做服务信息或推入信息,是一种特殊格式的短信。
      WAP就像因特网,是一个内容丰富的网络,用户如何找到自己喜欢的站点,如何在一个站点中找到自己喜欢的业务,往往需要花上很长的一段时间。而WAP PUSH可以将某一站点或某一业务的链接通过短信发送到支持WAP PUSH功能的手机上,这样您只需要阅读这条短信(服务信息),打开短信中的链接,就可以直接访问业务了。因此,WAP PUSH实现了短信和WAP业务的结合,节省了您寻找业务的时间,方便您直接找到并使用自己喜欢的业务。PUSH信息无论是否被用户打开,都会保留在手机的"推入收件箱"内,用户可以重复打开。
wap push 的意思是带连接的短信,它可以引导你进入wap的网站。它是通过sp的网关发出来的,用软件和移动的接口。

WAP PUSH的特点优势
1 省去用户在手机上输入网址的不方便。如有些网址字数多,输入很麻烦。
2 适合用来做针对性的促销、广告宣传。如您可以直接讲某个活动信息的页面地址、某个优惠券的页面地址、某个产品的页面地址直接推送到用户手机。
3 用户强制性接受,到达率达到100%
4 用户打开率高收到WAP-PUSH后打开的比例分布:
据互联网权威研究机构艾瑞咨询研究,收到WAPPUSH后,有16.6%的网民一般都会打开,看清说明文字后打开的比例达到了53.6%。而基本不打开或直接删除的比例分别为11.4%和18.6。可以发现,WAPPUSH推送服务的接受程度是很高的,尤其是随着WAPPUSH发送的文字说明和介绍对用户是否打开起了比较重要的作用,大部分用户是在看清了文字说明之后才打开WAPPUSH的。
5 2006年以后出产的手机几乎全部支持接受WAPPUSH

你可能感兴趣的:(sms)