2016-08-01 121 views
2

我正在尝试创建一个应用程序,当您按下按钮时,它会向预设号码发送文本消息,并且我正在使用Twilio作为SMS消息。问题是我正在使用Swift作为我的应用程序,并且目前它们没有快速示例。这是我发送消息代码:Twilio在swift中发送短信

func sendSMS() 
{ 

    let twilioSID = "AC11ed62fdb971a8f56d9be531a5ce40c2" 
    let twilioSecret = "mySecretID" 

    let fromNumber = "number" 
    let toNumber = "number" 
    let message = "This is a test message" 


    // Build the request 
    let request = NSMutableURLRequest(URL: NSURL(string:"https://\(twilioSID):\(twilioSecret)@api.twilio.com/2010-04-01/Accounts/\(twilioSID)/SMS/Messages")!) 
    request.HTTPMethod = "POST" 
    request.HTTPBody = "From=\(fromNumber)&To=\(toNumber)&Body=\(message)".dataUsingEncoding(NSUTF8StringEncoding) 

    // Build the completion block and send the request 
    NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data, response, error) in 
     print("Finished") 
     if let data = data, responseDetails = NSString(data: data, encoding: NSUTF8StringEncoding) { 
      // Success 
      print("Response: \(responseDetails)") 
     } else { 
      // Failure 
      print("Error: \(error)") 
     } 
    }).resume() 
} 

但每当我尝试运行该功能,我得到这个

Finished 
Response: <?xml version='1.0' encoding='UTF-8'?> 
<TwilioResponse><RestException><Code>20003</Code><Detail>Your AccountSid or AuthToken was incorrect.</Detail><Message>Authentication Error - No credentials provided</Message><MoreInfo>https://www.twilio.com/docs/errors/20003</MoreInfo><Status>401</Status></RestException></TwilioResponse> 

我知道,我的凭据是正确的.....

有没有更好的方法来做到这一点?有没有人有一个例子呢?

+2

iOS不会让您在URL中嵌入用户名/密码,因为它不安全。您需要为您的请求添加验证标头。 – Paulw11

+0

@ Paulw11我会怎么做呢? Swift是新的,因此网上没有很多教程 –

回答

1

Matthew,正如上述评论中所述/我们不建议您出于安全原因通过客户端代码从REST API发送SMS。

我们建议您包装您的凭据,并使用在这里看到的例子可用助手库的一个在后端应用程序中发送SMS: https://www.twilio.com/docs/api/rest/sending-messages

实际上wrote a post我的一位同事来解决这一对Android社区,看起来我们应该为Swift做同样的事情,这会更加快速。

[更新]How to send an SMS from Swift post

希望这会有所帮助。