创建注册通知中心 Azure PHP

Posted

技术标签:

【中文标题】创建注册通知中心 Azure PHP【英文标题】:Create Registration Notification Hub Azure PHP 【发布时间】:2016-03-11 13:17:38 【问题描述】:

我正在尝试使用来自 php API Microsoft 的 REST API NotificationHub AZURE创建注册

¿有人知道它是怎么做的吗?

问候和感谢!

【问题讨论】:

【参考方案1】:

一般来说,访问通知中心 REST 端点需要 3 个主要步骤:

    解析连接字符串 生成授权令牌 执行 HTTP 调用

您可以参考https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-php-backend-how-to/了解更多详情。

同时,您可以在您的应用程序中直接使用Azure Team提供的these PHP sample,它可以轻松实现您的需求。

【讨论】:

【参考方案2】:
# 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;
    

【讨论】:

以上是关于创建注册通知中心 Azure PHP的主要内容,如果未能解决你的问题,请参考以下文章

Azure 通知中心不适用于 ios

Azure 通知中心 - 安装是不是可以防止重复通知?

以编程方式创建 Azure 推送通知中心

如何向 Azure 通知中心注册的每个设备发送不同的推送通知?

缺少通知中心设备注册

Azure 通知中心注册模板 xml 无效