如何使用exponent-server-sdk-php向应用发送推送通知

z9smfwbn  于 2022-11-28  发布在  PHP
关注(0)|答案(1)|浏览(109)

请我需要帮助发送推送通知给任何人安装我的应用程序在他们的Android手机上获得推送通知每次我创建一个职位使用PHP作为后端.
下面是我的代码:

$response = array();
require_once __DIR__.'/exponent-server-sdk-php/vendor/autoload.php';

        $channelName = 'video_alert';
        $recipient =  'ExponentPushToken[AAAAnrlyESE:APA91bHYeOkFi5MlUB9eitKn1yEuReJ1dNrRSnlMob0lcBLAjoanDaAIposGTBWQD164CGMV8F0hriJtsXuaFPdoKxEpjtrnXshoxlZQmxdlrCjP_F5TyRToNGP43YqwahCd6XYhKvwX]';
        
        // You can quickly bootup an expo instance
        $expo = \ExponentPhpSDK\Expo::normalSetup();
        
        // Subscribe the recipient to the server
        $expo->subscribe($channelName, $recipient);
        
        // Unsubscribe the recipient from the server
        $expo->unSubscribe($channelName, $recipient);
        
        // Build the notification data
        $notification = ['title' => 'Watch Movies', 'body' => 'Catch new latest movie ('.$movie_title.') on DooBuxx Movies today!', 'data' => json_encode(array('notification_type' => 'service_requested'))];
        try {
        // Notify an interest with a notification
        $expo->notify([$channelName], $notification);
        }  catch (ExpoException $e) {
            $response["message"] = $e->getMessage();
         }

对于以下部分:

$channelName = 'video_alert';
        $recipient =  'ExponentPushToken[Server key]'; // I Inserted the server key i got from my firebase dasboard here. The package name is ok

服务器密钥是正确的吗?还是什么?这是我认为我做得不对的地方。但我不知道还能放什么。
正如您所看到的,我使用了从GitHub克隆的exponent-server-sdk-php来发送推送通知,但它在发布到服务器后没有发送任何内容。
有什么地方我做错了吗?我也检查了错误日志,但那里没有错误。
当我第一次发布时,虽然创建了一个令牌文件,但没有向安装了该应用程序的Android手机发送通知。
我已经配置了我的firebase证书的React原生项目,我正在建设后,从博览会网站here的指示,但都无济于事。
我知道我在这里做得不好,但似乎还想不出来。请帮帮我。

j7dteeu8

j7dteeu81#

它不是服务器密钥,而是一个标识用户设备的令牌。使用Expo,你可以通过运行Notifications.getExpoPushTokenAsync()来获得它。它给你一个令牌,看起来像ExponentPushToken[unique1],其中unique 1是唯一标识符。你应该将它存储在后端,并在你想向该特定设备发送通知的地方调用它。
然后,您应该为要发送通知的每个令牌(设备)订阅一个收件人。
示例来自doc:

$channelName = 'video_alert';

$recipient1 = 'ExponentPushToken[unique1]';
$recipient2 = 'ExponentPushToken[unique2]';

// …

// Subscribe the recipients to the server
$expo->subscribe($channelName, $recipient1);
$expo->subscribe($channelName, $recipient2);

// …

// Notify an interest with a notification, the 2 recipients will receive it
$expo->notify([$channelName], $notification);

相关问题