Переполнение стека уведомлений при регистрации в концентраторе Azure

Я пытаюсь создать регистрацию используя REST API NotificationHub AZURE из PHP API Microsoft

¿Кто-нибудь знает, как это делается?

С уважением и спасибо!

-2

Решение

Вообще говоря, для доступа к конечным точкам REST Notification Hubs требуется 3 основных шага:

  1. Разобрать строку подключения
  2. Сгенерировать токен авторизации
  3. Выполнить HTTP-вызов

Вы можете обратиться к https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-php-backend-how-to/ для более подробной информации.

Между тем, вы можете напрямую использовать это пример PHP предоставляется командой Azure в вашем приложении, которое может легко реализовать ваши требования.

0

Другие решения

# build uri
$uri = $this->endpoint . $this->hubPath . "/registrations" . NotificationHub::API_NEW_VERSION;
$ch = curl_init();

$token = $this->generateSasToken($uri);

$headers = [
'Authorization: '. $token,
'Content-Type: application/xml',
'x-ms-version: 2015-01'
];

$request_body = self::requestBodyRegistration($device_type, $tagsOrTagExpression, $device_code );

if( is_null( $request_body ) )
{
return null;
}

curl_setopt_array($ch, array(
CURLOPT_URL => $uri,
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $request_body
));

// Send the request
$response = curl_exec($ch);

// Check for errors
if($response === FALSE){
throw new Exception(curl_error($ch));
}

$info = curl_getinfo($ch);
curl_close($ch);

private function requestBodyRegistration($device_type, $tagsOrTagExpression, $device_code )
{
switch ($device_type) {
case 'apple':
return '<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
<content type="application/xml">
<AppleRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
<Tags>'. $tagsOrTagExpression .'</Tags>
<DeviceToken>'. $device_code .'</DeviceToken>
</AppleRegistrationDescription>
</content>
</entry>';
case 'gcm':
return '<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
<content type="application/xml">
<GcmRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
<Tags>'. $tagsOrTagExpression .'</Tags>
<GcmRegistrationId>'. $device_code .'</GcmRegistrationId>
</GcmRegistrationDescription>
</content>
</entry>';
default:
return null;
}
}
0