在ios上通过Twilio发送短信?
问题描述:
我怎么能send SMS through twilio,我已经尝试过,并做了以下。在ios上通过Twilio发送短信?
- (IBAction)sendButtonPressed:(id)sender
{
NSLog(@"Sending request.");
// Common constants
NSString *kTwilioSID = delegate.sessionId;
NSString *kTwilioSecret = delegate.twilioToken;
NSString *kFromNumber = delegate.twlioNumber;
NSString *kToNumber = @"+14126620408";
NSString *kMessage = @"Hi there......";
// Build request
NSString *urlString = [NSString stringWithFormat:@"https://%@:%@@api.twilio.com/2010-04-01/Accounts/%@/SMS/Messages", kTwilioSID, kTwilioSecret, kTwilioSID];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
// Set up the body
NSString *bodyString = [NSString stringWithFormat:@"From=%@&To=%@&Body=%@", kFromNumber, kToNumber, kMessage];
NSData *data = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
NSError *error;
NSURLResponse *response;
NSData *receivedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
// Handle the received data
if (error) {
NSLog(@"Error: %@", error);
} else {
NSString *receivedString = [[NSString alloc]initWithData:receivedData encoding:NSUTF8StringEncoding];
NSLog(@"Request sent. %@", receivedString);
}
}
并且出现错误:操作无法完成。 (kCFErrorDomainCFNetwork错误-1012。 请帮忙做这个问题,或与我分享任何帮助材质。在此先感谢。
答
据this answer,错误1012意味着身份验证的请求被用户取消。
这只是一种预感,但您可能想尝试使用HTTP基本身份验证,方法是添加一个Authorization标头,如下所示:Objective-c HTTP Basic authentication,而不是将URL包含在URL字符串中,该字符串依靠Objective C库将它们正确地转换为标头。
答
确保HttpPost参数是URL编码的,所以你应该改变
NSString *kToNumber = @"+14126620408";
到
NSString *kToNumber = @"%2B14126620408";
答
我写这篇博客文章,以帮助您快速使用Xcode中8完成,斯威夫特3
https://www.twilio.com/blog/2016/11/how-to-send-an-sms-from-ios-in-swift.html
使用服务器端您选择的语言和HTTP请求的Alamofire,请求归结为:
@IBAction func sendData(sender: AnyObject) {
let headers = [
"Content-Type": "application/x-www-form-urlencoded"
]
let parameters: Parameters = [
"To": phoneNumberField.text ?? "",
"Body": messageField.text ?? ""
]
Alamofire.request("YOUR_NGROK_URL/sms", method: .post, parameters: parameters, headers: headers).response { response in
print(response)
}
}
我使用您的代码在iOS应用程序中发送短信。但是,在发送短信时,我收到了与您不同的错误。 '收件人'号码+91 **********不是有效的电话号码(代码21211) 我检查了我使用的号码是否正确定义了+(国家代码)(电话号码没有)。你能帮我解决这个问题吗? – Rachit 2013-08-20 12:17:15
嗨你解决了这个问题吗? – 2014-09-29 10:40:33