我目前在一个社交平台上工作,它是托管在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应用程序才这么做的。
如果有人知道如何解决这个问题,我会非常高兴。最好的问候,本杰明
1条答案
按热度按时间uxhixvfz1#
我认为如果不修改buddyboss插件的核心代码,这是不可能做到的。因为buddyboss销售的移动的应用程序能够接收来自平台的通知(你需要的)。这就是为什么我认为他们阻止了另一个应用程序的这个功能