android 如何使用OneSignal将BuddyBoss推送通知发送到自定义PWA?

jpfvwuh4  于 2023-03-16  发布在  Android
关注(0)|答案(1)|浏览(128)

我目前在一个社交平台上工作,它是托管在wordpress上的BuddyBoss主题和插件。社区运行良好,我也想把它作为一个应用程序启动。我真的很想在这个应用程序中有推送通知,这样如果一个用户用BuddyBoss消息工具给另一个用户写了一条私人消息,其他用户会收到该消息的推送通知。我已经有一个应用程序,就像一个非常简单的PWA,我在一个网站上做的,在那里你可以只将你的网站转换为一个应用程序。该应用程序也有一个oneSignal集成,所以它链接到我的帐户,这已经工作,所以我可以发送推送通知给所有用户,这工作得很好。现在我还想有私人消息的推送通知。
我尝试向BuddyBoss主题functions.php添加一些代码,它提取用户的OneSignal ID并使用OneSignal API向该用户发送Push通知。
下面是我添加的代码:

function notify_private_message( $message ) {
    // Get the recipient user ID
    $recipient_id = $message->recipients[0];

    // Get the recipient's OneSignal device ID from user meta data
    $device_id = get_user_meta( $recipient_id, 'onesignal_user_id', true );
    error_log( 'notify_private_message called with device ID: ' . $device_id );

    // Send a custom push notification to the recipient's device
    if ( $device_id ) {
        $content = array(
            'en' => 'You have a new private message'
        );

        $fields = array(
            'app_id' => 'myAppID',
            'include_player_ids' => array( $device_id ),
            'data' => array(
                'bp_message_id' => $message->id
            ),
            'contents' => $content
        );

        $ch = curl_init();
        curl_setopt( $ch, CURLOPT_URL, 'https://onesignal.com/api/v1/notifications' );
        curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json; charset=utf-8',
            'Authorization: Basic mySecretKey'
        ) );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt( $ch, CURLOPT_POST, true );
        curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
        $response = curl_exec( $ch );
        curl_close( $ch );
    }
}
add_action( 'messages_message_after_save', 'notify_private_message', 10, 1 );

同样,有了这个代码,我仍然没有推送通知功能。在我原来的代码中,我已经包括了我的ID和密钥。
我已经尝试添加此代码的不同版本,但什么都不起作用。我检查了我的应用程序和OneSignal的连接是否正常,它确实正常,我认为错误一定是在BuddyBoss和将正确用户ID的消息发送到OneSignal之间的连接上。我也尝试了不同的设备,没有任何区别,此外,我不能看到任何传出的消息,从我的OneSignal Jmeter 板,使错误应该早一点去的地方。也许需要补充的是,我只是为了一个Android应用程序才这么做的。
如果有人知道如何解决这个问题,我会非常高兴。最好的问候,本杰明

uxhixvfz

uxhixvfz1#

我认为如果不修改buddyboss插件的核心代码,这是不可能做到的。因为buddyboss销售的移动的应用程序能够接收来自平台的通知(你需要的)。这就是为什么我认为他们阻止了另一个应用程序的这个功能

相关问题