Tüm OneSignal server SDK’ları aynı OpenAPI spesifikasyonundan üretildiğinden, dilden bağımsız olarak tutarlı bir arayüz paylaşırlar. Her SDK, OneSignal REST API’yi sarar ve istekler ile yanıtlar için tiplendirilmiş modeller sağlar.
Mevcut SDK’lar
Kurulum
Node.js
Python
Java
Go
PHP
Ruby
C# (.NET)
Rust
npm install @onesignal/node-onesignal
pip install onesignal-python-api
Maven<dependency>
<groupId>com.onesignal</groupId>
<artifactId>onesignal-java-client</artifactId>
<version>5.3.0</version>
</dependency>
Gradleimplementation "com.onesignal:onesignal-java-client:5.3.0"
go get github.com/OneSignal/onesignal-go-api/v5
composer.json’a ekleyin:{
"require": {
"onesignal/onesignal-php-api": "*@dev"
}
}
Ardından composer update çalıştırın.Gemfile’ınıza ekleyin:gem 'onesignal', '~> 5.3.0-beta1'
Ardından bundle install çalıştırın.dotnet add package OneSignalApi
Cargo.toml’daki [dependencies] altına ekleyin:onesignal-rust-api = "5.3.0"
Yapılandırma
Her SDK, API anahtarları aracılığıyla kimlik doğrulaması gerektirir. İki anahtar türü mevcuttur:
- REST API Anahtarı — bildirim gönderme, kullanıcı yönetimi vb. çoğu endpoint için gereklidir. Uygulamanızın Ayarlar > Anahtarlar ve Kimlikler bölümünde bulunur.
- Organization API Anahtarı — yalnızca uygulama oluşturma veya listeleme gibi kuruluş düzeyindeki endpoint’ler için gereklidir. Organization Ayarları’nda bulunur.
Node.js
Python
Java
Go
PHP
Ruby
C# (.NET)
Rust
const OneSignal = require('@onesignal/node-onesignal');
const configuration = OneSignal.createConfiguration({
restApiKey: 'YOUR_REST_API_KEY',
organizationApiKey: 'YOUR_ORGANIZATION_API_KEY',
});
const client = new OneSignal.DefaultApi(configuration);
import onesignal
from onesignal.api import default_api
configuration = onesignal.Configuration(
rest_api_key='YOUR_REST_API_KEY',
organization_api_key='YOUR_ORGANIZATION_API_KEY',
)
with onesignal.ApiClient(configuration) as api_client:
client = default_api.DefaultApi(api_client)
import com.onesignal.client.ApiClient;
import com.onesignal.client.Configuration;
import com.onesignal.client.auth.HttpBearerAuth;
import com.onesignal.client.api.DefaultApi;
ApiClient defaultClient = Configuration.getDefaultApiClient();
HttpBearerAuth restApiAuth = (HttpBearerAuth) defaultClient
.getAuthentication("rest_api_key");
restApiAuth.setBearerToken("YOUR_REST_API_KEY");
HttpBearerAuth orgApiAuth = (HttpBearerAuth) defaultClient
.getAuthentication("organization_api_key");
orgApiAuth.setBearerToken("YOUR_ORGANIZATION_API_KEY");
DefaultApi client = new DefaultApi(defaultClient);
import onesignal "github.com/OneSignal/onesignal-go-api"
restAuth := context.WithValue(
context.Background(),
onesignal.RestApiKey,
"YOUR_REST_API_KEY",
)
orgAuth := context.WithValue(
restAuth,
onesignal.OrganizationApiKey,
"YOUR_ORGANIZATION_API_KEY",
)
apiClient := onesignal.NewAPIClient(onesignal.NewConfiguration())
use onesignal\client\api\DefaultApi;
use onesignal\client\Configuration;
use GuzzleHttp;
$config = Configuration::getDefaultConfiguration()
->setRestApiKeyToken('YOUR_REST_API_KEY')
->setOrganizationApiKeyToken('YOUR_ORGANIZATION_API_KEY');
$client = new DefaultApi(
new GuzzleHttp\Client(),
$config
);
require 'onesignal'
OneSignal.configure do |config|
config.rest_api_key = 'YOUR_REST_API_KEY'
config.organization_api_key = 'YOUR_ORGANIZATION_API_KEY'
end
client = OneSignal::DefaultApi.new
using OneSignalApi.Api;
using OneSignalApi.Client;
var config = new Configuration();
config.BasePath = "https://api.onesignal.com";
config.AccessToken = "YOUR_REST_API_KEY";
var client = new DefaultApi(config);
use onesignal::apis::configuration::Configuration;
fn create_configuration() -> Configuration {
let mut config = Configuration::new();
config.rest_api_key_token = Some("YOUR_REST_API_KEY".to_string());
config.organization_api_key_token = Some("YOUR_ORGANIZATION_API_KEY".to_string());
config
}
API anahtarlarınızı ortam değişkenlerinde veya bir sırlar yöneticisinde saklayın. Kaynak kontrolüne asla commit etmeyin.
Push bildirimi gönderme
Bir segmenti hedefleyerek web ve mobil Abonelikler’e push bildirimleri gönderin.
Node.js
Python
Java
Go
PHP
Ruby
C# (.NET)
Rust
const notification = new OneSignal.Notification();
notification.app_id = 'YOUR_APP_ID';
notification.contents = { en: 'Hello from OneSignal!' };
notification.headings = { en: 'Push Notification' };
notification.included_segments = ['Subscribed Users'];
const response = await client.createNotification(notification);
console.log('Notification ID:', response.id);
notification = onesignal.Notification(
app_id='YOUR_APP_ID',
contents=onesignal.StringMap(en='Hello from OneSignal!'),
headings=onesignal.StringMap(en='Push Notification'),
included_segments=['Subscribed Users'],
)
response = client.create_notification(notification)
print('Notification ID:', response.id)
import com.onesignal.client.model.Notification;
import com.onesignal.client.model.StringMap;
Notification notification = new Notification();
notification.setAppId("YOUR_APP_ID");
StringMap contents = new StringMap();
contents.en("Hello from OneSignal!");
notification.setContents(contents);
StringMap headings = new StringMap();
headings.en("Push Notification");
notification.setHeadings(headings);
notification.setIncludedSegments(Arrays.asList("Subscribed Users"));
var response = client.createNotification(notification);
System.out.println("Notification ID: " + response.getId());
notification := *onesignal.NewNotification("YOUR_APP_ID")
notification.SetContents(onesignal.StringMap{En: onesignal.PtrString("Hello from OneSignal!")})
notification.SetHeadings(onesignal.StringMap{En: onesignal.PtrString("Push Notification")})
notification.SetIncludedSegments([]string{"Subscribed Users"})
response, _, err := apiClient.DefaultApi
.CreateNotification(orgAuth)
.Notification(notification)
.Execute()
if err != nil {
log.Fatal(err)
}
fmt.Println("Notification ID:", response.GetId())
use onesignal\client\model\Notification;
use onesignal\client\model\StringMap;
$content = new StringMap();
$content->setEn('Hello from OneSignal!');
$headings = new StringMap();
$headings->setEn('Push Notification');
$notification = new Notification();
$notification->setAppId('YOUR_APP_ID');
$notification->setContents($content);
$notification->setHeadings($headings);
$notification->setIncludedSegments(['Subscribed Users']);
$response = $client->createNotification($notification);
echo 'Notification ID: ' . $response->getId();
notification = OneSignal::Notification.new({
app_id: 'YOUR_APP_ID',
contents: { en: 'Hello from OneSignal!' },
headings: { en: 'Push Notification' },
included_segments: ['Subscribed Users']
})
response = client.create_notification(notification)
puts "Notification ID: #{response.id}"
using OneSignalApi.Model;
var notification = new Notification(appId: "YOUR_APP_ID")
{
Contents = new StringMap(en: "Hello from OneSignal!"),
Headings = new StringMap(en: "Push Notification"),
IncludedSegments = new List<string> { "Subscribed Users" }
};
var response = client.CreateNotification(notification);
Console.WriteLine("Notification ID: " + response.Id);
use onesignal::apis::default_api;
use onesignal::models::{Notification, StringMap};
let mut contents = StringMap::new();
contents.en = Some("Hello from OneSignal!".to_string());
let mut headings = StringMap::new();
headings.en = Some("Push Notification".to_string());
let mut notification = Notification::new("YOUR_APP_ID".to_string());
notification.contents = Some(Box::new(contents));
notification.headings = Some(Box::new(headings));
notification.included_segments = Some(vec!["Subscribed Users".to_string()]);
let config = create_configuration();
let response = default_api::create_notification(&config, notification).await;
E-posta gönderme
email kanalıyla Abonelikler’e e-posta gönderin.
Node.js
Python
Java
Go
PHP
Ruby
C# (.NET)
Rust
const notification = new OneSignal.Notification();
notification.app_id = 'YOUR_APP_ID';
notification.email_subject = 'Important Update';
notification.email_body = '<h1>Hello!</h1><p>This is an HTML email.</p>';
notification.included_segments = ['Subscribed Users'];
notification.channel_for_external_user_ids = 'email';
const response = await client.createNotification(notification);
notification = onesignal.Notification(
app_id='YOUR_APP_ID',
email_subject='Important Update',
email_body='<h1>Hello!</h1><p>This is an HTML email.</p>',
included_segments=['Subscribed Users'],
channel_for_external_user_ids='email',
)
response = client.create_notification(notification)
Notification notification = new Notification();
notification.setAppId("YOUR_APP_ID");
notification.setEmailSubject("Important Update");
notification.setEmailBody("<h1>Hello!</h1><p>This is an HTML email.</p>");
notification.setIncludedSegments(Arrays.asList("Subscribed Users"));
notification.setChannelForExternalUserIds("email");
var response = client.createNotification(notification);
notification := *onesignal.NewNotification("YOUR_APP_ID")
notification.SetEmailSubject("Important Update")
notification.SetEmailBody("<h1>Hello!</h1><p>This is an HTML email.</p>")
notification.SetIncludedSegments([]string{"Subscribed Users"})
notification.SetChannelForExternalUserIds("email")
response, _, err := apiClient.DefaultApi
.CreateNotification(orgAuth)
.Notification(notification)
.Execute()
$notification = new Notification();
$notification->setAppId('YOUR_APP_ID');
$notification->setEmailSubject('Important Update');
$notification->setEmailBody('<h1>Hello!</h1><p>This is an HTML email.</p>');
$notification->setIncludedSegments(['Subscribed Users']);
$notification->setChannelForExternalUserIds('email');
$response = $client->createNotification($notification);
notification = OneSignal::Notification.new({
app_id: 'YOUR_APP_ID',
email_subject: 'Important Update',
email_body: '<h1>Hello!</h1><p>This is an HTML email.</p>',
included_segments: ['Subscribed Users'],
channel_for_external_user_ids: 'email'
})
response = client.create_notification(notification)
var notification = new Notification(appId: "YOUR_APP_ID")
{
EmailSubject = "Important Update",
EmailBody = "<h1>Hello!</h1><p>This is an HTML email.</p>",
IncludedSegments = new List<string> { "Subscribed Users" },
ChannelForExternalUserIds = "email"
};
var response = client.CreateNotification(notification);
let mut notification = Notification::new("YOUR_APP_ID".to_string());
notification.email_subject = Some("Important Update".to_string());
notification.email_body = Some("<h1>Hello!</h1><p>This is an HTML email.</p>".to_string());
notification.included_segments = Some(vec!["Subscribed Users".to_string()]);
notification.channel_for_external_user_ids = Some("email".to_string());
let response = default_api::create_notification(&config, notification).await;
SMS gönderme
sms kanalıyla Abonelikler’e SMS metin mesajları gönderin.
Node.js
Python
Java
Go
PHP
Ruby
C# (.NET)
Rust
const notification = new OneSignal.Notification();
notification.app_id = 'YOUR_APP_ID';
notification.contents = { en: 'Your SMS message content here' };
notification.included_segments = ['Subscribed Users'];
notification.channel_for_external_user_ids = 'sms';
notification.sms_from = '+15551234567';
const response = await client.createNotification(notification);
notification = onesignal.Notification(
app_id='YOUR_APP_ID',
contents=onesignal.StringMap(en='Your SMS message content here'),
included_segments=['Subscribed Users'],
channel_for_external_user_ids='sms',
sms_from='+15551234567',
)
response = client.create_notification(notification)
StringMap contents = new StringMap();
contents.en("Your SMS message content here");
Notification notification = new Notification();
notification.setAppId("YOUR_APP_ID");
notification.setContents(contents);
notification.setIncludedSegments(Arrays.asList("Subscribed Users"));
notification.setChannelForExternalUserIds("sms");
notification.setSmsFrom("+15551234567");
var response = client.createNotification(notification);
notification := *onesignal.NewNotification("YOUR_APP_ID")
notification.SetContents(onesignal.StringMap{En: onesignal.PtrString("Your SMS message content here")})
notification.SetIncludedSegments([]string{"Subscribed Users"})
notification.SetChannelForExternalUserIds("sms")
notification.SetSmsFrom("+15551234567")
response, _, err := apiClient.DefaultApi
.CreateNotification(orgAuth)
.Notification(notification)
.Execute()
$content = new StringMap();
$content->setEn('Your SMS message content here');
$notification = new Notification();
$notification->setAppId('YOUR_APP_ID');
$notification->setContents($content);
$notification->setIncludedSegments(['Subscribed Users']);
$notification->setChannelForExternalUserIds('sms');
$notification->setSmsFrom('+15551234567');
$response = $client->createNotification($notification);
notification = OneSignal::Notification.new({
app_id: 'YOUR_APP_ID',
contents: { en: 'Your SMS message content here' },
included_segments: ['Subscribed Users'],
channel_for_external_user_ids: 'sms',
sms_from: '+15551234567'
})
response = client.create_notification(notification)
var notification = new Notification(appId: "YOUR_APP_ID")
{
Contents = new StringMap(en: "Your SMS message content here"),
IncludedSegments = new List<string> { "Subscribed Users" },
ChannelForExternalUserIds = "sms",
SmsFrom = "+15551234567"
};
var response = client.CreateNotification(notification);
let mut contents = StringMap::new();
contents.en = Some("Your SMS message content here".to_string());
let mut notification = Notification::new("YOUR_APP_ID".to_string());
notification.contents = Some(Box::new(contents));
notification.included_segments = Some(vec!["Subscribed Users".to_string()]);
notification.channel_for_external_user_ids = Some("sms".to_string());
notification.sms_from = Some("+15551234567".to_string());
let response = default_api::create_notification(&config, notification).await;
Tam API referansı
Her server SDK aynı API endpoint setini destekler. Kullanıcılar, abonelikler, segmentler, şablonlar ve daha fazlası dahil olmak üzere tam yöntem listesi için SDK’nızın API belgelerine bakın.
Temel REST API için tam API referansına bakın.
SSS
Hangi server SDK’sını seçmeliyim?
Backend dilinizle eşleşen SDK’yı kullanın. Tüm server SDK’ları aynı OpenAPI spesifikasyonundan üretilir ve aynı endpoint’leri destekler, bu nedenle işlevsellik tüm dillerde aynıdır.
REST API Anahtarı ile Organization API Anahtarı arasındaki fark nedir?
REST API Anahtarı tek bir uygulamaya kapsamlıdır ve bildirim gönderme, kullanıcı yönetimi gibi çoğu işlem için gereklidir. Organization API Anahtarı organizasyonunuza kapsamlıdır ve yalnızca uygulama oluşturma veya listeleme için gereklidir. Çoğu entegrasyon yalnızca REST API Anahtarına ihtiyaç duyar.
SDK yerine REST API’yi doğrudan kullanabilir miyim?
Evet. Server SDK’ları OneSignal REST API etrafında kolaylık sağlayan sarmalayıcılardır. API’yi Bearer token kimlik doğrulamasıyla herhangi bir HTTP istemcisi kullanarak doğrudan çağırabilirsiniz.
Bu SDK’lar otomatik oluşturuluyor mu?
Evet. Tüm server SDK’ları OpenAPI Generator kullanılarak OneSignal OpenAPI spesifikasyonundan üretilmektedir. Bu, tüm dillerde tutarlı API kapsamını sağlar.