zbox/unified-push

Unified Push 支持通过 APNs、GCM 和 MPNS 为 iOS、Android 和 Windows Phone 设备提供推送通知

0.9.2 2016-09-29 17:58 UTC

This package is not auto-updated.

Last update: 2024-09-18 03:58:10 UTC


README

Scrutinizer Code Quality

Unified Push 支持通过 APNs、GCM 和 MPNS 为 iOS、Android 和 Windows Phone 设备提供推送通知。

Wiki: UML 结构和序列图

安装

推荐通过 composer 安装 UnifiedPush。

{
    "require": {
	    "zbox/unified-push": "^0.9"
    }
}

特性

  • 支持为平台发送推送通知的统一接口
    • Apple (APNS)
    • Android (GCM)
    • Windows Phone (MPNS)

要求

  • PHP 5.3.2 或更高版本
  • HTTP 客户端 (kriswallsmith/buzz)
  • PSR Log (psr/log)
  • PHPUnit 运行测试

用法

配置通知服务客户端工厂

创建带有凭证的配置服务客户端工厂。

<?php

use Zbox\UnifiedPush\NotificationService\ServiceClientFactory;
use Zbox\UnifiedPush\NotificationService\ServiceCredentialsFactory;
use Zbox\UnifiedPush\Utils\ClientCredentials\CredentialsMapper;

$credentialsFactory = 
    new ServiceCredentialsFactory(
        new CredentialsMapper()
    );

$credentials = ['certificate' => 'path', 'certificatePassPhrase' => 'pass'];
$credentialsFactory->addCredentialsForService('APNS', $credentials);

$clientFactory = new ServiceClientFactory($credentialsFactory);
$clientFactory->setDefaultConfigPath();

初始化消息调度器

使用客户端工厂、通知构建器和响应处理器初始化类。

<?php

use Zbox\UnifiedPush\Dispatcher;
use Zbox\UnifiedPush\Notification\NotificationBuilder;
use Zbox\UnifiedPush\NotificationService\ResponseHandler;

$dispatcher =
    new Dispatcher(
        $clientFactory,
        new NotificationBuilder(),
        new ResponseHandler()
    );

$dispatcher->setDevelopmentMode(true);

创建消息

创建 APNS、GCM、MPNS(原始、瓷砖或吐司)类型消息。

<?php

use Zbox\UnifiedPush\Message\MessageCollection;
use Zbox\UnifiedPush\Message\Type\APNS as APNSMessage;
use Zbox\UnifiedPush\Message\Type\APNSAlert;
use Zbox\UnifiedPush\Message\Type\GCM as GCMMessage;

$message1 = new APNSMessage();
$message1
    ->setAlertDictionary(
        (new APNSAlert)
            ->setActionLocKey('btn')
            ->setLocKey('msg')
            ->setLocArgs([$args])
    )
	->setSound('alert')
	->getBadge('2');

$message1->addRecipient('deviceToken1');

$message2 = new GCMMessage();
$message2
	->setCollapseKey('key')
	->addRecipientIdentifiers(
       new \ArrayIterator([
			'deviceToken1', 
			'deviceToken2'
		])
	)
    ->setPayloadData([
		'keyA' => 'value1',
		'keyB' => 'value2',
    ]);
    
$messages = 
    new MessageCollection([
        $message1, 
        $message2
    ]);

调度消息

发送消息并加载反馈。

<?php

$dispatcher
    ->dispatchAll($messages)
    ->loadFeedback();

状态

处理响应,查看调度错误报告。

<?php

$responseHandler = $dispatcher->getResponseHandler();
$responseHandler->handleResponseCollection();

$invalidRecipients  = $responseHandler->getInvalidRecipients();
$messageErrors      = $responseHandler->getMessageErrors();

许可证

MIT,见 LICENSE。