Я использовал переводчик Google. Извините.
Я пытаюсь отправить FCM pu sh на смартфон android, используя libwebsockets. Я видел и создал несколько примеров, но я получаю ответ «Error = MissingRegistration».
Тело отправлено, как показано ниже, (я попробовал Postmand, и это сработало.)
{
"registration_ids": [
"cxtrQat-PAw: APA .....- QN-Sz"
],
"priority": "high",
"data": {
"detail": {
"body": "push body",
"title": "push title"
}
}
}
В функции обратного вызова libwebsockets я установил ее следующим образом.
static int callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
{
unsigned char buf[LWS_PRE + 4096];
unsigned char* start = &buf[LWS_PRE];
unsigned char* pos = start;
unsigned char* end = &buf[sizeof(buf) - LWS_PRE - 1];
switch (reason)
{
/* ...Skip... */
case LWS_CALLBACK_CLIENT_HTTP_WRITEABLE:
case LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER:
printf("** LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER\n");
if (!lws_http_is_redirected_to_get(wsi)) // POST
{
printf("%s: doing POST flow\n", __func__);
unsigned char** pos = (unsigned char**)in;
unsigned char* end = (*pos) + len;
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE, (unsigned char *)"application/json", 16, pos, end))
{
printf("lws_add_http_header_by_token : WSI_TOKEN_HTTP_CONTENT_TYPE\n");
return -1;
}
printf("pss->nbody : %d\n", pss->nbody);
if(lws_add_http_header_content_length(wsi, pss->nbody, pos, end))
{
printf("lws_add_http_header_content_length\n");
return -1;
}
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_AUTHORIZATION, (const unsigned char*)pss->auth, strlen(pss->auth), pos, end))
{
printf("lws_add_http_header_by_token : WSI_TOKEN_HTTP_AUTHORIZATION\n");
return -1;
}
} else // GET
printf("%s: doing GET flow\n", __func__);
break;
case LWS_CALLBACK_CLIENT_HTTP_WRITEABLE:
printf("** LWS_CALLBACK_CLIENT_HTTP_WRITEABLE\n");
strcpy(buf+LWS_PRE, pss->body);
if(0 > lws_write(wsi, (unsigned char*)&buf[LWS_PRE], strlen(&buf[LWS_PRE]), LWS_WRITE_HTTP_FINAL))
{
printf("## Error Write body\n");
return -1;
}
lws_client_http_body_pending(wsi, 0);
return 0;
Вы видите, почему приходит ответ "Error = MissingRegistration"?
Могу ли я получить пример отправки fcm pu sh используя libwebsockets?
Спасибо.