Просмотр исходного кода

发送参数,调用服务端接口发送验证码 给自己
服务器 地址 /zhuxunserver/sms/sendCode
POST 发送 参数={ serverID:"", loginName:"", userID: 123, mobile:"" }

hxb лет назад: 9
Родитель
Сommit
0d51f1f51d

+ 1 - 1
ManagerUserDefault.swift

@@ -53,7 +53,7 @@ class ManagerUserDefault: BaseOBJ {
         
     }
     //删
-    private func DeleteUserDefault(obj:String){
+    func DeleteUserDefault(obj:String){
         //手动更新数据
         defer{
             userDefaults.synchronize()

+ 87 - 1
README.md

@@ -4,4 +4,90 @@
 完成登录逻辑
     短信验证界面完成
     正在补充短信验证代码
-    
+        http request
+    待封装 Alamofire http request
+
+
+
+POST    /zhuxunserver/sms/sendCode  -发送短信验证码
+参数说明:
+String serverID      -必填项,服务器ID                             √
+String loginName     -必填项,用户账号                              √
+String|int userID    -必填项,用户ID                                 √
+String mobile        -可选项,手机号码,可有多个号码,以英文逗号间隔       
+String message       -可选项,短信内容,默认有统一格式
+String|int priority  -可选项,优先级,默认为0
+String extAttrs      -可选项,扩展数据
+String uuid          -可选项,请求唯一标识
+参数格式:{ uuid:"", serverID:"", loginName:"", userID: 123, mobile:"接收人手机号码,多个以“,”隔开", message:"短信内容", priority:"优先级,默认:0", extAttrs:"扩展信息,可选" }
+
+
+
+//验证码发送成功
+
+
+
+
+
+params = @{@"serverID":_loginData.serverID,
+@"userID": _loginData.addrBookID,
+@"mobile":phoneTF.text,
+@"message":@"",
+@"priority": @(0),
+@"extAttrs":@""
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+短信操作
+-----------------------
+POST    /zhuxunserver/sms/send  -短信发送
+参数说明:
+String|int userID    -必填项,用户ID
+String mobile        -可选项,手机号码,可有多个号码,以英文逗号间隔
+String message       -可选项,短信内容,默认有统一格式
+String|int priority  -可选项,优先级,默认为0
+String extAttrs      -可选项,扩展数据
+String uuid          -可选项,请求唯一标识
+参数格式: { uuid:"", userID: 123, mobile:"接收人手机号码,多个以“,”隔开", message:"短信内容", priority:"优先级,默认:0", extAttrs:"扩展信息,可选" } 
+
+POST    /zhuxunserver/sms/sendCode  -发送短信验证码
+参数说明:
+String serverID      -必填项,服务器ID
+String loginName     -必填项,用户账号
+String|int userID    -必填项,用户ID
+String mobile        -可选项,手机号码,可有多个号码,以英文逗号间隔
+String message       -可选项,短信内容,默认有统一格式
+String|int priority  -可选项,优先级,默认为0
+String extAttrs      -可选项,扩展数据
+String uuid          -可选项,请求唯一标识
+参数格式:{ uuid:"", serverID:"", loginName:"", userID: 123, mobile:"接收人手机号码,多个以“,”隔开", message:"短信内容", priority:"优先级,默认:0", extAttrs:"扩展信息,可选" }
+
+POST    /zhuxunserver/sms/authCode  -短信验证码验证
+参数说明:
+String serverID    -必填项,服务器ID
+String loginName   -必填项,用户账号
+String|int userID  -必填项,用户ID
+String mobile      -必填项,手机号码
+String code        -必填项,验证码
+String uid         -可选项,请求唯一标识
+参数格式:{ uuid:"", serverID:"", loginName:"", userID: 123, mobile:"", code:"" }

BIN
SocketChat.xcworkspace/xcuserdata/justine.xcuserdatad/UserInterfaceState.xcuserstate


+ 102 - 22
SocketChat.xcworkspace/xcuserdata/justine.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -42,27 +42,11 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "SocketChat/LoginViewController.swift"
-            timestampString = "486354903.764587"
+            timestampString = "486369479.111585"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "112"
-            endingLineNumber = "112"
-            landmarkName = "checkUser(_:password:)"
-            landmarkType = "5">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "SocketChat/LoginViewController.swift"
-            timestampString = "486354384.7184"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "87"
-            endingLineNumber = "87"
+            startingLineNumber = "94"
+            endingLineNumber = "94"
             landmarkName = "checkUser(_:password:)"
             landmarkType = "5">
             <Locations>
@@ -106,11 +90,11 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "SocketChat/LoginViewController.swift"
-            timestampString = "486354500.825446"
+            timestampString = "486369479.111585"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "39"
-            endingLineNumber = "39"
+            startingLineNumber = "46"
+            endingLineNumber = "46"
             landmarkName = "checkUser(_:password:)"
             landmarkType = "5">
             <Locations>
@@ -147,5 +131,101 @@
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "SocketChat/SMSViewController.swift"
+            timestampString = "486369479.111585"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "53"
+            endingLineNumber = "53"
+            landmarkName = "viewDidLoad()"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "SocketChat/SMSViewController.swift"
+            timestampString = "486369474.255421"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "29"
+            endingLineNumber = "29"
+            landmarkName = "requireCode(_:)"
+            landmarkType = "5">
+            <Locations>
+               <Location
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SocketChat.SMSViewController.requireCode (__ObjC.UIButton) -&gt; ()"
+                  moduleName = "SocketChat"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/justine/Desktop/IOSproject/SwiftIMChat/SocketChat/SMSViewController.swift"
+                  timestampString = "486371259.994444"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "29"
+                  endingLineNumber = "29"
+                  offsetFromSymbolStart = "1160">
+               </Location>
+               <Location
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SocketChat.SMSViewController.(requireCode (__ObjC.UIButton) -&gt; ()).(closure #1)"
+                  moduleName = "SocketChat"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/justine/Desktop/IOSproject/SwiftIMChat/SocketChat/SMSViewController.swift"
+                  timestampString = "486371259.994583"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "30"
+                  endingLineNumber = "30"
+                  offsetFromSymbolStart = "128">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "SocketChat/LoginViewController.swift"
+            timestampString = "486370281.490533"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "134"
+            endingLineNumber = "134"
+            landmarkName = "checkUser(_:password:)"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "SocketChat/LoginViewController.swift"
+            timestampString = "486369646.808496"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "119"
+            endingLineNumber = "119"
+            landmarkName = "checkUser(_:password:)"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 19 - 7
SocketChat/Base.lproj/Main.storyboard

@@ -182,7 +182,7 @@
                                     <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Pve-AE-YUa" userLabel="mobile">
                                         <rect key="frame" x="64" y="0.0" width="456" height="30"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                                        <textInputTraits key="textInputTraits"/>
+                                        <textInputTraits key="textInputTraits" keyboardType="phonePad"/>
                                     </textField>
                                 </subviews>
                                 <constraints>
@@ -200,26 +200,33 @@
                                         <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                                         <nil key="highlightedColor"/>
                                     </label>
-                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="KSF-Mg-poK" userLabel="smscode">
-                                        <rect key="frame" x="64" y="0.0" width="373" height="30"/>
+                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="KSF-Mg-poK" userLabel="smscode">
+                                        <rect key="frame" x="64" y="0.0" width="344" height="30"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                                        <textInputTraits key="textInputTraits"/>
+                                        <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
                                     </textField>
-                                    <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="L0c-kp-LAi">
-                                        <rect key="frame" x="445" y="0.0" width="75" height="30"/>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="L0c-kp-LAi">
+                                        <rect key="frame" x="416" y="0.0" width="104" height="30"/>
                                         <state key="normal" title="发送验证码"/>
+                                        <connections>
+                                            <action selector="requireCode:" destination="9Qf-j5-Kbi" eventType="touchUpInside" id="c4I-65-nKS"/>
+                                        </connections>
                                     </button>
                                 </subviews>
                                 <constraints>
                                     <constraint firstItem="L0c-kp-LAi" firstAttribute="leading" secondItem="KSF-Mg-poK" secondAttribute="trailing" constant="8" id="3sA-rt-KYh"/>
                                     <constraint firstAttribute="trailing" secondItem="L0c-kp-LAi" secondAttribute="trailing" id="FZO-Nl-jh6"/>
                                     <constraint firstItem="KSF-Mg-poK" firstAttribute="leading" secondItem="3hU-oV-suN" secondAttribute="trailing" constant="8" id="e08-UM-Elb"/>
+                                    <constraint firstItem="L0c-kp-LAi" firstAttribute="width" secondItem="KSF-Mg-poK" secondAttribute="width" multiplier="300:1000" id="jEF-mQ-DmY"/>
                                     <constraint firstItem="3hU-oV-suN" firstAttribute="leading" secondItem="xmH-2T-x8l" secondAttribute="leading" id="ywH-rR-l5S"/>
                                 </constraints>
                             </stackView>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bXO-eR-aff">
                                 <rect key="frame" x="40" y="190" width="520" height="40"/>
-                                <state key="normal" title="发送验证码" backgroundImage="login_bg.png"/>
+                                <state key="normal" title="登陆" backgroundImage="login_bg.png"/>
+                                <connections>
+                                    <action selector="checkCode:" destination="9Qf-j5-Kbi" eventType="touchUpInside" id="VFe-Mz-JUt"/>
+                                </connections>
                             </button>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
@@ -229,6 +236,7 @@
                             <constraint firstAttribute="trailingMargin" secondItem="bXO-eR-aff" secondAttribute="trailing" constant="20" id="LxW-yU-bnN"/>
                             <constraint firstItem="bXO-eR-aff" firstAttribute="centerX" secondItem="Xne-NS-r9V" secondAttribute="centerX" id="Rwk-jC-M0f"/>
                             <constraint firstItem="bXO-eR-aff" firstAttribute="leading" secondItem="Xne-NS-r9V" secondAttribute="leadingMargin" constant="20" id="Wqn-OH-Y2j"/>
+                            <constraint firstItem="KSF-Mg-poK" firstAttribute="width" relation="lessThanOrEqual" secondItem="Pve-AE-YUa" secondAttribute="width" id="cl0-cs-zYh"/>
                             <constraint firstItem="xmH-2T-x8l" firstAttribute="top" secondItem="GAK-CL-Aq1" secondAttribute="top" id="dCQ-n3-Gyr"/>
                             <constraint firstItem="xmH-2T-x8l" firstAttribute="centerX" secondItem="Xne-NS-r9V" secondAttribute="centerX" id="dV9-W6-XlK"/>
                             <constraint firstItem="xmH-2T-x8l" firstAttribute="width" secondItem="bXO-eR-aff" secondAttribute="width" id="hE8-8K-1fT"/>
@@ -244,6 +252,10 @@
                             </mask>
                         </variation>
                     </view>
+                    <connections>
+                        <outlet property="mobile" destination="Pve-AE-YUa" id="w3T-RZ-uG4"/>
+                        <outlet property="smscode" destination="KSF-Mg-poK" id="tt2-tz-iHd"/>
+                    </connections>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="bZ0-D0-Vc8" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>

+ 15 - 1
SocketChat/LoginViewController.swift

@@ -15,12 +15,19 @@ class LoginViewController: UIViewController{
     @IBOutlet weak var passWord: UITextField!
     var hud:MBProgressHUD = MBProgressHUD()
     var Response:ServerModel = ServerModel.init()
+    var afusername:String?
+    var afuserid:Int?
     @IBAction func LoginBtn(sender: UIButton) {
         //使用全局方法 去除空格
         var username = (userName.text!)
         var password = (passWord.text!)
         username = trimstring(username, trimchar: " ")
         password = trimstring(password, trimchar: " ")
+        
+        
+        //后知后觉临时加入 存取用的username
+        afusername = username
+        
         //将用户转换为登陆对象传递
         hud.labelText = "连接中..."
         hud.show(true)
@@ -109,7 +116,8 @@ class LoginViewController: UIViewController{
                             print("大字典bigDic1转字典dataDic1转换失败")
                             return
                         }
-                        //未锁定
+                        self.afuserid = dataDic1["id"]  as? Int
+                       //未锁定
                         guard (dataDic1["isLocked"]as! Bool) == false else{
                             print("账号已锁定请联系管理员")
                             self.hud.labelText = "账号已锁定请联系管理员"
@@ -119,6 +127,12 @@ class LoginViewController: UIViewController{
                         if (dataDic1["needSMS"]as! Bool) {
                             //showBindbySMScontroller
                             print("设备需要绑定,即将进入短信绑定界面")
+                            //清空老用户信息
+                            ManagerUserDefault().DeleteUserDefault(USERDEFAULT_USER_NAME)
+                            ManagerUserDefault().DeleteUserDefault(USERDEFAULT_USER_ID)
+                            print("进入前储存用户信息")
+                            ManagerUserDefault().InsertUserDefault(self.afusername!, key: USERDEFAULT_USER_NAME)
+                            ManagerUserDefault().InsertUserDefault(self.afuserid!, key: USERDEFAULT_USER_ID)
                             self.showSMSVC()
                         }
                         //进入主界面 更新设备token

+ 42 - 2
SocketChat/SMSViewController.swift

@@ -7,12 +7,52 @@
 //
 
 import UIKit
-
+import Alamofire
 class SMSViewController: UIViewController {
+    @IBOutlet weak var mobile: UITextField!
+    @IBOutlet weak var smscode: UITextField!
+    let serverid = USER_SERVER_ID as! String
+    let userid = DEFAULT_USER_ID as! Int
+    let loginname = DEFAULT_USER_NAME as! String
+    @IBAction func requireCode(sender: UIButton) {
+        var remainingSeconds: Int = 60
+        sender.enabled = false
+        sender.setTitle(String(remainingSeconds), forState: UIControlState.Disabled)
+        
+        //请求验证码
+        let mobile = trimstring(self.mobile.text!,trimchar: " ")
+        let param:[String:AnyObject] = ["serverID":serverid,
+                     "loginName":loginname,
+                     "userID":userid,
+                     "mobile":mobile
+                     ]
+        request(.POST, RequireSMSURL, parameters: param).responseJSON { (R) in
+            guard R.result.error == nil else{
+                return
+            }
+        }
+        
+        
+        
+    }
+    @IBAction func checkCode(sender: UIButton) {
+        //获取手机号  未校验
+        //mobile
+        //获取验证码
+        //验证。。。。
+        //mobile.text
+        
+    }
+
+    func timer(times:Int){
+        
+    }
+    
+    
 
     override func viewDidLoad() {
         super.viewDidLoad()
-
+        
         // Do any additional setup after loading the view.
     }
 

+ 14 - 2
func.swift

@@ -10,7 +10,7 @@ import Foundation
 //去除首位String空格--------------------------------------
 let whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet()
 //去字符串空格
-func trimstring(str:String,trimchar:String)->String{
+func trimstring(str:String,trimchar:String = " ")->String{
     let array = str.componentsSeparatedByCharactersInSet(NSCharacterSet (charactersInString: trimchar))
     let arrayStr = array.joinWithSeparator("")
     return arrayStr
@@ -46,10 +46,22 @@ let USER_SOCKET_SERVER = USER_APP_SERVER
 var USER_SOCKET_SERVER_URI = ((USER_APP_SERVER as! NSString).componentsSeparatedByString(":"))
 let SOCKET_HOST = USER_SOCKET_SERVER_URI[0]
 let SOCKET_PORT = Int(USER_SOCKET_SERVER_URI[1])
-    //################## About LoginMsg
+//################## About LoginMsg
 let USERDEFAULT_USER_NAME = "USERDEFAULT_USER_NAME"
 let USERDEFAULT_LOGIN_NAME = "USERDEFAULT_LOGIN_NAME"
 let USERDEFAULT_USER_ID = "USERDEFAULT_USER_ID"
 let USERDEFAULT_PASSWORD = "USERDEFAULT_PASSWORD"
 let USERDEFAULT_SERVER_ID = "USERDEFAULT_SERVER_ID"
 let USERDEFAULT_APP_TOKEN = "USERDEFAULT_APP_TOKEN"
+
+
+let DEFAULT_USER_NAME = ManagerUserDefault().SelectUserDefault(USERDEFAULT_USER_NAME)
+let DEFAULT_USER_ID = ManagerUserDefault().SelectUserDefault(USERDEFAULT_USER_ID)
+
+//############### Check SMS ###############
+let RequireSMSURL = (USER_APP_SERVER as! String) + "/zhuxunserver/sms/sendCode"
+
+
+
+
+