سوئیفت یک زبان برنامه نویسی کامپایل شده و شی گرا است که توسط اپل برای توسعه نرم افزار های wathos ، macOS ، ios و tvOS طراحی شده است.
از آنجایی که این زبان یکی از محبوب ترین زبان های برنامه نویسی در دنیای اپل است، بدیهی است که دراپلیکیشن ها و نرم افزارهای مناسب برای اپل مورد استفاده قرار بگیرد. حال شما اگر در نرم افزار خود به قابلیت اراسال پیامک با زبان swift دارید، این مطلب برای شما مفید است.
مراحل ارسال پیامک با زبان Swift
ارسال پیامک از یک برنامه swift به این معنی است که شما باید از طریق Api به یک سرویس پیامکی متصل شوید تا پیام های متنی شما را به شماره موبایل کاربران ارسال نماید. برای این کار باید مراحل زیر را طی نمایید.
- مرحله اول : با ثبت نام در سامانه پیامکی پیام رسان ، شما به یک وب سرویس پیامکی با معماری Restful Api دسترسی دارید که انواع روش ها و متد های ارسال و دریافت را برایتان آماده کرده است . همچنین در پیام رسان یک خط هدیه و چند صد پیامک تست به شما ارائه می شود.
- مرحله دوم : با فعالسازی وب سرویس پیامکی (بدون هزینه ) ، می توانید یک APIKEY اختصاصی خود را دریافت کنید و سپس از متد های آن استفاده نمایید.
- مرحله سوم : نمونه کد های آماده که به زبان swift را برایتان در ادامه قرار داده ایم که می توانید با استفاده از آن، پیامک های دلخواه خود را از طریق برنامه خود ارسال نمایید.
جهت ثبت نام در سامانه پیامکی پیام رسان ،از طریق فرم زیر اقدام نمایید.
کسب و کار داری و میخوای تبلیغات پیامکی انبوه داشته باشی؟!
جهت ثبت نام در سامانه پیامکی پیام رسان، شماره موبایل خود را وارد کنید.
وب سرویس پیامکی برای زبان swift
همانطور که در ویدیو بالا مشاهده کردید، تمامی امکانات را برای آنکه بتوانید از این Api در برنامه Swift خود استفاده نمایید بصورت فعال برای همه کاربران در سامانه پیام رسان قرار گرفته است. امکاناتی از قبیل :
- ارسال پیامک بر اساس پترن جهت استفاده از خط خدماتی شرکتی
- نمونه کد آماده و مستندات برنامه نویسی
- بروزرسانی دائمی و آپ تایم بالا
- سرعت و دقت بالا
- پشتیبانی فنی
برای شروع کار شما به تعریف یک سری مقادیر ثابت از جمله سرشماره، کلید api و … دارید که نمونه آن را در زیر قرار دادیم.
import Foundation
// تعریف متغیرها
let apiKey = "YOUR API KEY" // مقدار API Key شما
let sender = "YOUR SMS SENDER NUMBER" // شماره فرستنده پیامک شما
let baseUrl = "http://api.sms-webservice.com/api/V3/" // آدرس Base URL شما
// حالا میتوانید از این متغیرها در سایر بخشهای کدتان استفاده کنید
print("API Key: \(apiKey)")
print("Sender: \(sender)")
print("Base URL: \(baseUrl)")
جهت دریافت APIKEY پس از ورود به پنل پیامکی پیام رسان؛ از طریق راهنمای تصویری زیر اقدام نمایید.

متد ارسال یک متن به یک یا چند شماره با متد Get (Send )
با استفاده از این متد و نمونه کد در زبان برنامهنویسی Swift، میتوانید در یک بار فراخوانی به حداکثر 99 شماره پیام ارسال کنید. این بدان معناست که نیازی به فراخوانی مجدد متد برای هر شماره به صورت جداگانه نخواهید داشت. شما میتوانید شمارهها را به گروههای 99 تایی تقسیم کرده و هر گروه را به وسیله یک آرایه در زبان Swift به وبسرویس پیامکی ارسال کنید.
import Foundation
// ایجاد URL
let urlString = "https://api.sms-webservice.com/api/V3/Send?ApiKey=YourApiKey&Text=YourSMSText&Sender=5000&Recipients=09123456789"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "GET"
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد ارسال یک متن به یک یا چند شماره با متد post (SendBulk )
کاربرد این متد کاملاً مشابه متد قبلی است، با این تفاوت که نوع درخواست برای ارسال پیامک با Swift متفاوت خواهد بود. در متد اول، درخواست شما از نوع GET است، اما در این متد، درخواست از نوع POST خواهد بود. تفاوت اصلی این است که درخواستهای POST امنیت بالاتری دارند و امکان ارسال حجم بیشتری از دادهها را فراهم میکنند.
import Foundation
// ایجاد URL
let urlString = "https://api.sms-webservice.com/api/V3/SendBulk"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
// تنظیم بدنه درخواست
let payload = "ApiKey=YourApiKey&Text=YourSMSText&Sender=5000&Recipients=09123456789"
request.httpBody = payload.data(using: .utf8)
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد ارسال چند متن به چند گیرنده (SendMultiple)
اگر میخواهید با زبان Swift برای هر گیرنده یک پیام جداگانه ارسال کنید، این متد و نمونه کد برای شما مناسب است. با استفاده از این روش، نیازی به ارسال درخواست جداگانه برای هر گیرنده نخواهید داشت و میتوانید پیامهای خود را در چند گروه 100 تایی با یک درخواست به وبسرویس پیامکی ارسال کنید.
import Foundation
// ساخت URL
let urlString = "https://api.sms-webservice.com/api/V3/SendMultiple"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ساختار داده JSON
struct Recipient: Codable {
let Sender: Int
let Text: String
let Destination: String
let UserTraceId: Int
}
struct Payload: Codable {
let ApiKey: String
let Recipients: [Recipient]
}
// ایجاد داده JSON
let payloadData = Payload(ApiKey: "YourApiKey", Recipients: [
Recipient(Sender: 5000, Text: "YourSMSText", Destination: "09123456789", UserTraceId: 0000)
])
// تبدیل داده به JSON
guard let jsonData = try? JSONEncoder().encode(payloadData) else {
print("Failed to encode JSON")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد ارسال به یک شماره با استفاده از الگوی تعریف شده (SendTokenSingle)
اگر برنامهنویس حرفهای باشید، احتمالاً با ارسال پیامک از طریق پترن آشنا هستید. این قابلیت امکان ارسال پیامک از سریعترین خط خدماتی را فراهم میکند و برای پیامکهایی که باید با سرعت بالا و به تمام شمارهها، حتی شمارههای بلکلیست مخابراتی ارسال شوند، مناسب است. برای مثال، پیامکهایی نظیر کد تایید و احراز هویت کاربران. در این حالت، با استفاده از کد Swift میتوانید از قابلیت پترن پیامرسان استفاده کنید. اگر ویدیوی ابتدایی مقاله را مشاهده کرده باشید، بیشتر با پترن و قالبهای آن آشنا خواهید شد.
import Foundation
// ساخت URL
let urlString = "https://api.sms-webservice.com/api/V3/SendTokenSingle"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "GET"
// تنظیم هدرهای سفارشی
request.setValue("YourApiKey", forHTTPHeaderField: "ApiKey")
request.setValue("YourPattern", forHTTPHeaderField: "TemplateKey")
request.setValue("09123456789", forHTTPHeaderField: "Destination")
request.setValue("Param1", forHTTPHeaderField: "P1")
request.setValue("Param2", forHTTPHeaderField: "P2")
request.setValue("Param3", forHTTPHeaderField: "P3")
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد ارسال یک الگو با متن های مختلف به چند شماره (SendTokenMulti)
اگر در حال توسعه برنامه یا وبسایتی با زبان Swift هستید و قصد دارید از قابلیت پترن برای ارسال انواع مختلف پیامک استفاده کنید، این متد گزینه مناسبی برای شما خواهد بود. با این روش، میتوانید یک بار درخواست ارسال کنید و پیامکها را به چندین شماره با استفاده از یک قالب مشترک ارسال نمایید.
import Foundation
// ساخت URL
let urlString = "https://api.sms-webservice.com/api/V3/SendTokenMulti"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ایجاد دادههای فرم URL-encoded
let payload = "ApiKey=YourApiKey&TemplateKey=YourPattern&Destination=09123456789&P1=Param1&P2=Param2&P3=Param3"
guard let payloadData = payload.data(using: .utf8) else {
print("Failed to encode payload")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpBody = payloadData
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد دریافت لیست الگوهای تعریف شده در پنل (TokenList)
اگر تمایل دارید لیست الگوهای تعریف شده در پنل را مشاهده کنید، میتوانید از این متد استفاده نمایید.
import Foundation
// ساخت URL
let urlString = "https://api.sms-webservice.com/api/V3/TokenList"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ایجاد دادههای فرم URL-encoded
let payload = "ApiKey=YourApiKey"
guard let payloadData = payload.data(using: .utf8) else {
print("Failed to encode payload")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpBody = payloadData
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد دریافت وضعیت پیام های ارسالی (StatusByTraceId)
اگر پس از ارسال پیام نیاز به بررسی وضعیت آنها داشته باشید و شناسههای پیامکهای ارسالی را در اختیار نداشته باشید، میتوانید از این متد در زبان Swift استفاده کنید. با استفاده از این روش، میتوانید وضعیت چندین پیام را در یک درخواست به طور همزمان استعلام نمایید.
import Foundation
// ساخت URL
let urlString = "https://api.sms-webservice.com/api/V3/StatusByUserTraceId"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// ایجاد دادههای JSON برای ارسال در درخواست
let payload: [String: Any] = [
"ApiKey": "YourApiKey",
"UserTraceIds": [0]
]
// تبدیل دادهها به فرمت JSON
guard let payloadData = try? JSONSerialization.data(withJSONObject: payload, options: []) else {
print("Failed to serialize JSON")
return
}
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = payloadData
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
متد دریافت مقدار اعتبار و لیست خطوط ارسال کننده فعال در پنل (AccountInfo)
اگر قصد دارید گزارشی از میزان اعتبار باقیمانده یا لیست خطوط فعال در پنل خود دریافت کنید، میتوانید از این متد در زبان Swift استفاده کنید. برای فراخوانی این متد، کافی است شناسه پنل خود را در بدنه درخواست ارسال کنید.
import Foundation
// ساخت URL
let urlString = "https://api.sms-webservice.com/api/V3/StatusByUserTraceId"
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
// دادههای JSON برای ارسال در درخواست
let payload: [String: Any] = [
"ApiKey": "YourApiKey",
"UserTraceIds": [0]
]
// تبدیل دادهها به فرمت JSON
do {
let payloadData = try JSONSerialization.data(withJSONObject: payload, options: [])
// ایجاد درخواست
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = payloadData
// ارسال درخواست با URLSession
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// بررسی خطا
if let error = error {
print("Error:", error)
return
}
// بررسی وضعیت پاسخ و داده دریافتی
if let httpResponse = response as? HTTPURLResponse, let data = data {
if httpResponse.statusCode == 200 {
// موفقیت: نمایش پاسخ
if let responseText = String(data: data, encoding: .utf8) {
print("Response:", responseText)
}
} else {
// خطا: نمایش وضعیت خطا
print("Error: HTTP Status Code", httpResponse.statusCode)
}
}
}
// شروع درخواست
task.resume()
} catch {
print("Failed to serialize JSON: \(error)")
}