Guia de integração S2S para PC e consola
Guia abrangente para a implementação da integração servidor a servidor para atribuição de jogos para PC e Consola, permitindo a medição e análise precisas de campanhas em plataformas de desktop e de jogos.
Funcionalidade empresarial: A atribuição de jogos para PC e consola é uma funcionalidade empresarial. Para saber mais, leia as Perguntas Frequentes sobre Atribuição de Jogos para PC e Consolaou contacte o seu Gestor de Sucesso do Cliente.
Requisito do Web SDK: A atribuição de PCs e consolas a partir de campanhas web requer a implementação do Singular Web SDK nas suas páginas de destino de marketing. O Web SDK captura dados de cliques e permite a correspondência de atribuição quando os utilizadores instalam e iniciam o seu jogo.
Etapas necessárias:
- Implementar o Singular Web SDKnas páginas de destino
- Configurar o Web SDK com o ID do produto correspondente (igual ao identificador do jogo)
- Implementar a integração S2S do lado do jogo (este guia)
- Opcionalmente, implemente a ID de correspondência para maior precisão de atribuição
Visão geral
Integração de servidor para servidor
A Singular fornece uma API REST que permite o relatório de servidor para servidor dos dados de conversão de jogos para PC e Consola para análise de atribuição, medição do desempenho da campanha e acompanhamento do comportamento do utilizador.
Capacidades de integração:
- Rastreamento de sessão de jogo: Relate sessões de usuários e atividades em lançamentos de jogos
- Atribuição de instalação: Atribuir novas instalações de jogos a campanhas de marketing
- Análise de eventos: Acompanhe os eventos no jogo e as interações dos utilizadores para análise do funil
- Medição de receitas: Medir compras no jogo e desempenho de monetização
- Suporte multiplataforma: Rastreamento unificado em PC, Xbox, PlayStation, Nintendo e Meta Quest
Pré-requisitos
Antes de implementar a integração PC & Console S2S, certifique-se de que o Web SDK esteja configurado corretamente para um fluxo de trabalho de atribuição completo.
| Componente | Requisito |
|---|---|
| SDK da Web |
Necessário: Deve ser implementado nas páginas de destino de marketing para capturar dados de cliques e permitir a atribuição. Guia de implementação: Visão geral e introdução ao Web SDK
Nota de configuração: O ID do produto do Web SDK deve corresponder ao identificador do jogo (parâmetro |
| Chave SDK |
Obter a chave do SDK da Singular no Dashboard → Ferramentas do desenvolvedor → Integração do SDK → Chaves do SDK |
| Método de atribuição |
Reveja os métodos de atribuição disponíveis e selecione a abordagem adequada para a sua implementação:
Consulte Métodos de atribuiçãopara obter detalhes. |
Arquitetura de integração
A atribuição completa de PC e Consola requer que a implementação do lado da Web e do lado do jogo trabalhem em conjunto.
Fluxo de atribuição:
- O utilizador clica no anúncio: O utilizador clica no anúncio da campanha de marketing do seu jogo
- Visita à página de destino: O utilizador chega à página de destino com o Singular Web SDK implementado
- Captura de cliques: O Web SDK captura os dados do clique, incluindo a impressão digital do dispositivo e os parâmetros da campanha
- Descarregamento do jogo: O utilizador descarrega e instala o jogo a partir da loja ou por descarregamento direto
- Primeiro lançamento: O utilizador inicia o jogo pela primeira vez
- Relatório de sessão: O jogo reporta a sessão através da API S2S com identificador de dispositivo
- Attribution Matching: Singular faz a correspondência entre a instalação do jogo e o clique na Web com base na impressão digital ou na Match ID
- Atribuição de campanha: Instalação atribuída à campanha de origem para medição do ROI
Recursos de documentação
A referência completa da API fornece especificações de ponto de extremidade, parâmetros e exemplos de implementação.
Documentação de integração:
- Web SDK:Visão geral e introdução ao Web SDK
- Referência da API S2S:Referência do ponto final S2S para PC e consola
- Guia de atribuição:Perguntas frequentes sobre atribuição de jogos para PC e consola
Conceitos de integração
Conceitos e requisitos essenciais para implementar a integração completa de S2S para PC e Console com Singular.
Autenticação
Requisito da chave SDK
Todas as solicitações à API S2S para PC e Console da Singular exigem autenticação da chave SDK no parâmetro a.
| Parâmetro | Descrição |
|---|---|
a
|
Chave SDK da Singular para autenticação da API. Localização: Singular Dashboard → Ferramentas de Desenvolvedor → Integração SDK → Chaves SDK Importante: Não use a Reporting API Key encontrada em Developer Tools → API Keys. A chave da API de relatórios é apenas para a API de relatórios da Singular.
Exemplo: |
Privacidade do utilizador
Conformidade com a privacidade
A Singular recomenda oferecer aos utilizadores finais a possibilidade de optarem por entrar ou sair do rastreamento para preservar a privacidade do utilizador e cumprir os regulamentos relevantes.
Opções de implementação:
- Opção 1: Não enviar dados de eventos do jogo para a Singular quando o usuário optar por não participar
-
Opção 2: Enviar dados de eventos do jogo, mas incluir opções de consentimento do utilizador através do parâmetro
data_sharing_optionscom o valor "Limitar partilha de dados
Estrutura de privacidade: A Singular usa "Limitar Compartilhamento de Dados" em Postbacks de Privacidade do Usuárioe passa informações para parceiros que exigem isso para conformidade regulatória. Veja Privacidade do Usuário e Limitar Compartilhamento de Dadospara detalhes completos.
Plataformas suportadas
Definição de plataforma
A plataforma representa onde o utilizador joga o jogo e deve ser passada no parâmetro pem todos os pedidos da API S2S.
Valores de plataforma suportados:
-
pc- Plataformas de computadores pessoais -
xbox- Consolas de jogos Microsoft Xbox -
playstation- Consolas de jogos Sony PlayStation -
nintendo- Consolas de jogos Nintendo -
metaquest- Auriculares Meta Quest VR
Sistemas operativos e lojas
Para além da plataforma, especificar o sistema operativo/jogo através do parâmetro ose a loja de distribuição através do parâmetro install_source.
|
Plataforma ( p) |
Sistema operativo/jogo ( os) |
Loja ( install_source) |
|---|---|---|
| pc |
|
|
| xbox |
|
|
| playstation |
|
|
| nintendo |
|
|
| metaquest |
|
|
Valores personalizados: Valores personalizados suportados para o sistema operativo e parâmetros de loja, mas a Singular recomenda a utilização de valores padronizados acima para consistência e clareza do relatório.
Identificador do jogo
Identificação do aplicativo
O identificador de jogo associa eventos de jogo a um jogo específico e deve ser passado no parâmetro i em cada solicitação.
Requisito crítico: O identificador do jogo usado na integração S2S deve corresponder exatamente ao ID do produto configurado na implementação do Singular Web SDK. Esse alinhamento é essencial para que o Singular atribua instalações de jogos a cliques em campanhas da Web.
Requisitos do identificador:
-
Formato: Qualquer valor suportado, mas a Singular recomenda a notação DNS reversa (por exemplo,
com.singular.game) - Alinhamento do Web SDK: Deve corresponder ao ID do produto do Web SDK configurado nas páginas de destino para que a atribuição funcione
- Consistência entre plataformas: O mesmo identificador de jogo deve ser usado para o mesmo jogo em todas as plataformas suportadas
Exemplos de configuração:
| Implementação | Configuração |
|---|---|
| SDK Web |
|
| API S2S (PC) |
|
| API S2S (Xbox) |
|
| API S2S (PlayStation) |
|
Identificação do dispositivo
Rastreio único da instalação do jogo
O identificador de instalação/dispositivo associa eventos de jogo em várias sessões de jogo para a mesma instalação de jogo e deve ser passado no parâmetro sdidem cada pedido.
Especificações do identificador:
- Formato: Formato UUID versão 4 recomendado
- Geração: Valor gerado pelo jogo/servidor no primeiro lançamento do jogo (instalação)
- Persistência: Deve persistir durante toda a vida útil da instalação do jogo
- Singularidade: Cada instalação de jogo requer um identificador único
Exemplo: sdid=40009df0-d618-4d81-9da1-cbb3337b8dec
Atribuição de ID de correspondência
O Match ID permite uma melhor precisão de atribuição para campanhas na Web, passando um identificador exclusivo do Web SDK para a instalação do jogo, fornecendo uma alternativa de correspondência determinística à atribuição baseada em impressões digitais.
Recurso avançado: A utilização do Match ID para atribuição é um recurso avançado que requer coordenação entre as implementações da web e do jogo. Consulte o Engenheiro de Soluções Singular antes de implementá-lo.
Como funciona o Match ID:
- O Web SDK gera o Match ID:O Singular Web SDKcria um Match ID único quando o utilizador visita a página de destino
- Recuperar o Match ID: Utilizar os métodos do Web SDK para recuperar o Match ID da landing page
- Passar para o jogo: Sua implementação passa o Match ID da página da Web para o jogo durante o processo de download/instalação (por exemplo, parâmetro de consulta, link profundo, cookie)
-
Relatório com o primeiro lançamento: O jogo inclui a ID da partida na notificação da primeira sessão para o Singular através do parâmetro
match_id - Correspondência determinística: A Singular usa a ID de correspondência para uma correspondência de atribuição precisa
Métodos de ID de correspondência do Web SDK
Implementação nativa
O Singular Web SDK fornece métodos nativos para recuperar, definir e limpar valores de Match ID em landing pages.
Métodos disponíveis:
| Método | Descrição |
|---|---|
getMatchID()
|
Recupera o Match ID único gerado pelo Singular Web SDK para a sessão web atual. Retorna: String contendo o valor do Match ID |
setMatchID(matchId)
|
Define o Match ID personalizado para a sessão web atual em vez de usar o valor gerado pelo Singular.
Parâmetros: |
clearMatchID()
|
Limpa a ID de correspondência personalizada definida via |
Exemplos de implementação
Implementação do SDK da Web nativo
Utilize estes métodos diretamente após a inicialização do Singular Web SDK para recuperar e gerenciar os valores de Match ID.
Recuperar ID de correspondência
// Get the Singular-generated Match ID
const matchId = window.singularSdk.getMatchID();
console.log('Match ID:', matchId);
// Store Match ID for passing to game
localStorage.setItem('singular_match_id', matchId);
Definir ID de correspondência personalizada
// Set your own Match ID value
const customMatchId = 'your-custom-match-id-123';
window.singularSdk.setMatchID(customMatchId);
console.log('Custom Match ID set:', customMatchId);
Limpar ID de correspondência
// Clear custom Match ID and revert to default
window.singularSdk.clearMatchID();
// Get the new default Match ID
const defaultMatchId = window.singularSdk.getMatchID();
console.log('Default Match ID restored:', defaultMatchId);
Exemplo completo com botão de download
// Initialize Web SDK
const config = new SingularConfig(sdkKey, sdkSecret, productId)
.withInitFinishedCallback(() = {
console.log('Singular SDK initialized');
});
singularSdk.init(config);
// Handle download button click
document.getElementById('download-button').addEventListener('click', function() {
// Get Match ID before redirecting to download
const matchId = window.singularSdk.getMatchID();
// Pass Match ID to download page via query parameter
const downloadUrl = `https://example.com/download?match_id=${matchId}`;
// Redirect to download page
window.location.href = downloadUrl;
});
Implementação do Gerenciador de tags do Google
Crie uma tag HTML personalizada no Google Tag Manager para gerenciar a funcionalidade de ID de correspondência.
Tag HTML personalizada do GTM
<script>
// Match ID Management Functions for GTM
// Get Match ID from Singular Web SDK
function getMatchID() {
if (window.singularSdk && window.singularSdk.getMatchID) {
return window.singularSdk.getMatchID();
}
console.warn('Singular SDK not initialized');
return null;
}
// Set custom Match ID
function setMatchID(data) {
if (!data.matchId) {
console.warn('No matchId provided');
return;
}
if (window.singularSdk && window.singularSdk.setMatchID) {
window.singularSdk.setMatchID(data.matchId);
console.log('Match ID set:', data.matchId);
} else {
console.warn('Singular SDK not initialized');
}
}
// Clear Match ID
function clearMatchID() {
if (window.singularSdk && window.singularSdk.clearMatchID) {
window.singularSdk.clearMatchID();
console.log('Match ID cleared');
} else {
console.warn('Singular SDK not initialized');
}
}
// Make functions available globally
window.singularMatchID = {
get: getMatchID,
set: setMatchID,
clear: clearMatchID
};
</script>
Uso das funções do GTM
// Get Match ID
const matchId = window.singularMatchID.get();
console.log('Match ID:', matchId);
// Set custom Match ID
window.singularMatchID.set({ matchId: 'custom-id-123' });
// Clear Match ID
window.singularMatchID.clear();
Exemplo de gatilho GTM
<script>
// Trigger on button click
document.addEventListener('DOMContentLoaded', function() {
const downloadButton = document.getElementById('download-button');
if (downloadButton) {
downloadButton.addEventListener('click', function() {
// Get Match ID via GTM function
const matchId = window.singularMatchID.get();
if (matchId) {
// Push to dataLayer for GTM
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'download_click',
'singular_match_id': matchId
});
// Redirect with Match ID
const downloadUrl = `https://example.com/download?match_id=${matchId}`;
window.location.href = downloadUrl;
}
});
}
});
</script>
Passagem do ID da partida para o jogo
Estratégias de implementação
Depois de recuperar o Match ID do Web SDK, implemente um mecanismo para passar o valor da página de destino para a instalação do jogo.
Abordagens comuns:
| Método | Implementação | Caso de utilização |
|---|---|---|
| Parâmetro de consulta |
Anexar o ID do jogo ao URL de download como parâmetro de consulta.
|
Transferências diretas em que a página de transferência pode extrair o parâmetro e transmiti-lo ao instalador do jogo |
| Armazenamento de cookies |
Armazenar o Match ID num cookie original acessível pela página de download do jogo.
|
Fluxos de várias páginas em que o ID de correspondência precisa de persistir nas navegações de página |
| Armazenamento local |
Armazenar o Match ID no armazenamento local do navegador.
|
Cenários do mesmo domínio em que a página de destino e a página de transferência partilham o armazenamento |
| Ligação profunda |
Incorporar o Match ID no esquema de deep link personalizado para lançamento direto do jogo.
|
Implementações avançadas com manipuladores de protocolo personalizados |
| API do lado do servidor |
Envia o Match ID para a API do servidor, o jogo recupera-o através de um pedido autenticado. |
Implementações seguras que requerem validação do lado do servidor e autenticação do utilizador |
Implementação da API S2S
Comunicar o ID do jogo
Assim que o jogo recuperar o Match ID da implementação web, incluir na notificação da primeira sessão para a Singular para correspondência de atribuição.
Momento crítico: O Match ID deve ser incluído na notificação da primeira sessão do jogo (instalação) para que a atribuição funcione. O envio da ID da partida em sessões subsequentes não permite a correspondência de atribuição.
Solicitação de sessão com ID de correspondência:
import requests
def report_first_session_with_match_id(sdk_key, game_id, device_id, platform, match_id):
"""
Report first game session with Match ID for attribution
"""
session_url = "https://s2s.singular.net/api/v1/launch"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'os': 'windows',
'install_source': 'steam',
'ip': get_user_ip(),
'match_id': match_id # Include Match ID for attribution
}
response = requests.get(session_url, params=params)
return response.json()
# Example: First launch with Match ID
report_first_session_with_match_id(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
match_id='abc123def456' # Retrieved from landing page
)
curl -G "https://s2s.singular.net/api/v1/launch" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "os=windows" \
--data-urlencode "install_source=steam" \
--data-urlencode "ip=172.58.29.235" \
--data-urlencode "match_id=abc123def456"
async function reportFirstSessionWithMatchId(config) {
const sessionUrl = 'https://s2s.singular.net/api/v1/launch';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'os': config.osVersion,
'install_source': config.store,
'ip': await getUserIP(),
'match_id': config.matchId // Include Match ID
});
const response = await fetch(`${sessionUrl}?${params.toString()}`);
return await response.json();
}
// Example: First launch with Match ID
reportFirstSessionWithMatchId({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
osVersion: 'windows',
store: 'steam',
matchId: 'abc123def456' # Retrieved from landing page
});
Melhores práticas de Match ID
Lista de verificação de implementação
Requisitos completos de implementação:
- Integração do Web SDK: Implementar o Singular Web SDKem páginas de destino com ID de produto correspondente
-
Recuperação da ID de Correspondência: Use
getMatchID()para recuperar o valor após a inicialização do SDK - Transmissão de valores: Implementar mecanismo seguro para passar a ID de correspondência da Web para o jogo
- Armazenamento no jogo: Armazenar a ID da partida no jogo até o primeiro lançamento/relatório de sessão
-
Apenas a primeira sessão: Incluir o parâmetro
match_idapenas na notificação da primeira sessão - Validação de valores: Verificar se o valor da ID da Partida corresponde entre as implementações da web e do jogo
- Testes: Teste o fluxo completo desde o clique na página de destino até a instalação e a atribuição do jogo
Para obter detalhes completos da metodologia de atribuição e solução de problemas, consulte Perguntas frequentes sobre atribuição de jogos para PC e console.
Rastreamento de sessão de jogo
O relatório de sessões de jogos para a Singular é necessário na integração de PC e Console, permitindo a atribuição de instalação, rastreamento de reengajamento e análise de retenção de usuários.
Ponto de extremidade de notificação de sessão
Requisito de implementação
Chamar o Session Notification Endpoint sempre que o jogo for iniciado para notificar a Singular sobre a sessão do jogo.
Referência da API: Para obter a especificação completa do endpoint, consulte a documentação do Session Notification Endpoint.
Processamento de sessão
Fluxo de trabalho de atribuição
As notificações de sessão permitem que a Singular execute várias funções de atribuição e análise com base no contexto da sessão.
Lógica de processamento:
- Primeira sessão (instalação): Se for a primeira sessão de jogo após uma instalação única, o Singular reconhece a nova instalação e aciona o processo de atribuição de instalação
- Sessão de reengajamento: Se a sessão for qualificada como reengajamento (em breve), o Singular aciona o processo de atribuição de reengajamento (consulte a FAQ sobre reengajamento)
- Sessão regular: Caso contrário, é marcada como sessão de jogo para rastreamento da atividade e retenção do usuário
Melhores práticas de implementação
Recolha de dados assíncrona
Ao coletar dados para relatar a sessão do jogo, aguarde o retorno das funções assíncronas e manipule várias funcionalidades antes de enviar a notificação da sessão.
Considerações críticas sobre o tempo:
- Atribuição de ID de correspondência: Quando utilizar o Match ID para melhorar a correspondência de atribuição, comunique a primeira sessão de jogo apenas depois de o Match ID estar potencialmente disponível
- Consentimento do utilizador: Se o jogo fornecer opt-in para marketing e análise da Singular, aguarde até que o consentimento seja coletado antes de relatar a sessão do jogo
- Identificador de dispositivo: Garantir que o SDID seja gerado e armazenado antes da notificação da primeira sessão
Exemplo de solicitação de sessão
Exemplo de implementação
import requests
def report_game_session(sdk_key, game_id, device_id, platform, os_version, store):
"""
Report game session to Singular
"""
session_url = "https://s2s.singular.net/api/v1/launch"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'os': os_version,
'install_source': store,
'ip': get_user_ip()
}
try:
response = requests.get(session_url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
if data.get('status') == 'ok':
print("Session reported successfully")
return True
else:
print(f"Session error: {data.get('reason')}")
return False
else:
print(f"HTTP error: {response.status_code}")
return False
except Exception as e:
print(f"Exception reporting session: {e}")
return False
# Example usage
report_game_session(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
os_version='windows',
store='steam'
)
curl -G "https://s2s.singular.net/api/v1/launch" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "os=windows" \
--data-urlencode "install_source=steam" \
--data-urlencode "ip=172.58.29.235"
async function reportGameSession(config) {
const sessionUrl = 'https://s2s.singular.net/api/v1/launch';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'os': config.osVersion,
'install_source': config.store,
'ip': await getUserIP()
});
try {
const response = await fetch(`${sessionUrl}?${params.toString()}`);
const data = await response.json();
if (data.status === 'ok') {
console.log('Session reported successfully');
return true;
} else {
console.error('Session error:', data.reason);
return false;
}
} catch (error) {
console.error('Exception reporting session:', error);
return false;
}
}
// Example usage
reportGameSession({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
osVersion: 'windows',
store: 'steam'
});
Rastreamento de eventos no jogo
Acompanhe os eventos no jogo e as interações dos utilizadores para analisar o desempenho das campanhas de marketing, otimizar os funis de utilizador e medir o envolvimento no percurso do jogador.
Planeamento de eventos
Definição do evento
Antes de implementar a integração S2S, defina os eventos que a sua organização pretende acompanhar para análise de campanhas e medição do comportamento do utilizador.
Guia de planeamento de eventos:definição de eventos no jogo
Ponto final de notificação de eventos
Relatório de eventos
Chame o Event Notification Endpoint quando ocorrer um evento no jogo para notificar a Singular para análise de atribuição e otimização de campanha.
Referência da API: Para obter a especificação completa do endpoint, consulte a documentação do Endpoint de Notificação de Evento.
O nome do evento incluído na chamada da API determina como o evento é identificado nos relatórios, exportações e postbacks da Singular.
Melhores práticas de nomenclatura de eventos
Eventos padrão
A Singular recomenda o uso de eventos padrão e convenção de nomenclatura de atributos para integração simplificada com parceiros e compatibilidade analítica.
Diretrizes de implementação:
- Eventos padrão: Use a convenção de nomenclatura de eventos padrão da Singularpara mapeamento automático de parceiros e simplificação da integração
- Idioma inglês: Passe nomes e atributos de eventos personalizados em inglês para compatibilidade com parceiros de terceiros e soluções de análise
- Limites de caracteres: Nomes de eventos limitados a 32 caracteres ASCII (32 bytes para conversão UTF-8)
- Limites de atributos: Atributos e valores de eventos limitados a 500 caracteres ASCII
Rastreamento de eventos de receita
Medição de receitas
Acompanhe as receitas das compras no jogo para analisar o desempenho da campanha e o ROI, com dados disponíveis em relatórios, exportações de registos e postbacks.
Implementação de eventos de receita: Use o Ponto de extremidade de notificação de evento com parâmetros de receita adicionais para designar eventos de receita.
Parâmetros de receita necessários:
-
is_revenue_event=true- Marca o evento como evento de receita (opcional se o nome do evento for__iap__ou o valor for maior que zero) -
amt=1.99- Valor da receita -
cur=USD- Código de moeda ISO 4217
Exemplos de solicitação de evento
Implementações de amostra
Evento padrão
import requests
def report_game_event(sdk_key, game_id, device_id, platform, event_name, event_attributes=None):
"""
Report in-game event to Singular
"""
event_url = "https://s2s.singular.net/api/v1/evt"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'n': event_name,
'ip': get_user_ip()
}
if event_attributes:
import json
params['e'] = json.dumps(event_attributes)
response = requests.get(event_url, params=params)
return response.json()
# Example: Level complete event
report_game_event(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
event_name='sng_level_achieved',
event_attributes={
'level': '5',
'score': '1250'
}
)
Evento de receita
def report_revenue_event(sdk_key, game_id, device_id, platform, amount, currency):
"""
Report revenue event to Singular
"""
event_url = "https://s2s.singular.net/api/v1/evt"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'n': '__iap__',
'is_revenue_event': 'true',
'amt': amount,
'cur': currency,
'ip': get_user_ip()
}
response = requests.get(event_url, params=params)
return response.json()
# Example: $9.99 purchase
report_revenue_event(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
amount=9.99,
currency='USD'
)
Evento padrão
curl -G "https://s2s.singular.net/api/v1/evt" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "n=sng_level_achieved" \
--data-urlencode 'e={"level":"5","score":"1250"}' \
--data-urlencode "ip=172.58.29.235"
Evento de receita
curl -G "https://s2s.singular.net/api/v1/evt" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "n=__iap__" \
--data-urlencode "is_revenue_event=true" \
--data-urlencode "amt=9.99" \
--data-urlencode "cur=USD" \
--data-urlencode "ip=172.58.29.235"
Evento standard
async function reportGameEvent(config) {
const eventUrl = 'https://s2s.singular.net/api/v1/evt';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'n': config.eventName,
'ip': await getUserIP()
});
if (config.attributes) {
params.append('e', JSON.stringify(config.attributes));
}
const response = await fetch(`${eventUrl}?${params.toString()}`);
return await response.json();
}
// Example: Level complete
reportGameEvent({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
eventName: 'sng_level_achieved',
attributes: {
level: '5',
score: '1250'
}
});
Evento de receita
async function reportRevenueEvent(config) {
const eventUrl = 'https://s2s.singular.net/api/v1/evt';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'n': '__iap__',
'is_revenue_event': 'true',
'amt': config.amount,
'cur': config.currency,
'ip': await getUserIP()
});
const response = await fetch(`${eventUrl}?${params.toString()}`);
return await response.json();
}
// Example: $9.99 purchase
reportRevenueEvent({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
amount: 9.99,
currency: 'USD'
});
Próximos passos
Complete a sua integração PC & Console S2S com recursos e suporte adicionais.
Recursos adicionais
Documentação e suporte
- Web SDK:Visão geral e introdução ao Web SDK
- Referência da API:Referência do ponto final S2S para PC e Consola
- Guia de atribuição:Perguntas frequentes sobre atribuição de jogos para PC e consola
- Planeamento de eventos:Definição de eventos no jogo
- Eventos padrão:Referência de eventos padrão singulares
- Códigos de resposta:Códigos de resposta S2S e tratamento de erros
Canais de suporte
Obter ajuda
Contacte a equipa da Singular para obter assistência na implementação e suporte técnico.
- Engenheiro de Soluções: Consultar o Engenheiro de Soluções da Singular para recursos avançados e planejamento de integração
- Gerente de Sucesso do Cliente: Contactar o CSM para ativação de funcionalidades empresariais e configuração de contas
- Equipe de suporte: Enviar tickets de suporte para questões técnicas e assistência na resolução de problemas