Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przegląd
Serwer PlayReady Test Server obsługuje składnię customData JSON na potrzeby zaawansowanej konfiguracji licencji. Ta metoda umożliwia deweloperom określanie złożonych parametrów licencji i zasad przy użyciu formatu JSON w polu CustomData żądań licencji.
Struktura JSON
Pole CustomData akceptuje obiekt JSON z różnymi parametrami konfiguracji:
{
"version": "1.0",
"config": {
"licenseType": "persistent|non-persistent|rental|subscription",
"keyId": "GUID",
"contentKey": "base64-encoded-key",
"policies": {
"outputProtection": {
"digital": "required|optional|never",
"analog": "required|optional|never"
},
"playback": {
"allowOffline": true|false,
"expirationDate": "ISO-8601-datetime",
"gracePeriod": "duration-in-seconds"
}
}
}
}
Parametry konfiguracji
Typ licencji
Określa typ licencji do wygenerowania:
- trwałe: licencja przechowywana na urządzeniu, przetrwa ponowne uruchomienie aplikacji
- nietrwale: licencja tymczasowa wygasa po zamknięciu aplikacji
- wynajem: licencja ograniczona czasowo z określonym wygaśnięciem
- subskrypcja: licencja oparta na subskrypcji z okresową walidacją
Zarządzanie kluczami
Konfigurowanie kluczy szyfrowania i identyfikatorów:
{
"keyId": "12345678-1234-1234-1234-123456789012",
"contentKey": "base64EncodedContentKey",
"keyRotation": {
"enabled": true,
"interval": "PT1H"
}
}
Zasady ochrony danych wyjściowych
Wymagania dotyczące ochrony danych wyjściowych kontroli:
{
"outputProtection": {
"digital": {
"hdcp": "required",
"cgmsa": "copy-never"
},
"analog": {
"macrovision": "required",
"cgmsa": "copy-once"
}
}
}
Przykładowe konfiguracje
Podstawowa licencja trwała
{
"version": "1.0",
"config": {
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"policies": {
"playback": {
"allowOffline": true
}
}
}
}
Licencja na wynajem z ograniczeniami czasu
{
"version": "1.0",
"config": {
"licenseType": "rental",
"keyId": "87654321-4321-4321-4321-210987654321",
"policies": {
"playback": {
"expirationDate": "2024-12-31T23:59:59Z",
"gracePeriod": 3600
},
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
}
}
Licencja subskrypcji z ochroną danych wyjściowych
{
"version": "1.0",
"config": {
"licenseType": "subscription",
"keyId": "11111111-2222-3333-4444-555555555555",
"policies": {
"playback": {
"allowOffline": false
},
"outputProtection": {
"digital": "required",
"analog": "required"
},
"subscription": {
"renewalUrl": "https://subscription.service.com/renew",
"validationInterval": "PT24H"
}
}
}
}
Użycie w żądaniach licencji
Żądanie HTTP POST
Uwzględnij konfigurację JSON w polu CustomData:
POST /pr/svc/rightsmanager.asmx HTTP/1.1
Host: playready.directtaps.net
Content-Type: application/octet-stream
[License Request with CustomData containing JSON configuration]
Integracja klienta
Przykład języka JavaScript
const customData = {
version: "1.0",
config: {
licenseType: "persistent",
keyId: keyId,
policies: {
playback: {
allowOffline: true
}
}
}
};
// Include in license request
const licenseRequest = {
customData: JSON.stringify(customData),
// ... other license request parameters
};
Przykład w języku C#
var customData = new {
version = "1.0",
config = new {
licenseType = "persistent",
keyId = keyId,
policies = new {
playback = new {
allowOffline = true
}
}
}
};
string jsonCustomData = JsonConvert.SerializeObject(customData);
// Include in PlayReady license request
Funkcje zaawansowane
Dostęp warunkowy
Skonfiguruj dostęp warunkowy na podstawie atrybutów urządzenia lub użytkownika:
{
"conditionalAccess": {
"deviceRestrictions": {
"allowedDeviceTypes": ["mobile", "desktop"],
"blockedDevices": ["emulator", "debugger"]
},
"geoRestrictions": {
"allowedCountries": ["US", "CA", "GB"],
"blockedRegions": ["region1", "region2"]
}
}
}
Obsługa wielu kluczy
Obsługa wielu kluczy szyfrowania:
{
"keys": [
{
"keyId": "key-1-guid",
"contentKey": "base64-key-1",
"keyType": "content"
},
{
"keyId": "key-2-guid",
"contentKey": "base64-key-2",
"keyType": "track"
}
]
}
Obsługa błędów
Błędy sprawdzania poprawności kodu JSON
- Źle sformułowany kod JSON: HTTP 400 ze szczegółami błędu analizowania w formacie JSON
- Brakujące wymagane pola: HTTP 400 z błędami walidacji pól
- Nieprawidłowe wartości pól: HTTP 400 z naruszeniami ograniczeń wartości
Błędy konfiguracji
- Nieobsługiwany typ licencji: HTTP 400 z listą obsługiwanych typów
- Nieprawidłowy format klucza: HTTP 400 z wymaganiami dotyczącymi formatu klucza
- Konflikty zasad: HTTP 400 ze wskazówkami dotyczącymi rozwiązywania problemów z zasadami
Najlepsze praktyki
- Walidacja kodu JSON: weryfikowanie struktury JSON przed wysłaniem żądań
- Zgodność wersji: użyj odpowiedniej wersji do obsługi funkcji
- Zabezpieczenia klucza: nigdy nie ujawniaj kluczy zawartości w kodzie po stronie klienta
- Testowanie zasad: Dokładnie przetestuj różne kombinacje zasad
- Obsługa błędów: Implementowanie kompleksowej obsługi błędów we wszystkich scenariuszach
Powiązana dokumentacja
- PlayReady Test Server Service — omówienie głównej usługi
- Składnia ciągu zapytania — prosta konfiguracja oparta na adresach URL
- Składnia base64 JSON — format JSON zakodowany w formacie Base64
- Serwery testowe PlayReady — kompletna dokumentacja serwera
Pomoc techniczna i rozwiązywanie problemów
W przypadku problemów ze składnią JSON usługi CustomData:
- Weryfikowanie formatu i struktury JSON
- Sprawdzanie obecności i wartości wymaganych pól
- Weryfikowanie zgodności i ograniczeń zasad
- Najpierw przetestuj z uproszczonymi konfiguracjami
- Przejrzyj odpowiedź serwera, aby uzyskać szczegółowe informacje o błędzie
Aby uzyskać dodatkową pomoc techniczną, zapoznaj się z główną dokumentacją serwerów testowych PlayReady .