使用 PHP 将通知推送到安卓应用程序



我正在尝试使用 PHP 创建推送通知。 我已经创建了我的 Firebase 帐户,并添加了需要添加到我的安卓应用中的内容。 我使用 Firebase 控制台对其进行了测试,它收到了通知。

现在我正在尝试使用 PHP 创建推送通知 下面是我的代码

$apiKey = "apikey"; //Server Key Legacy
$fcmUrl = 'https://fcm.googleapis.com/fcm/send';
$token= 'singletoken';
$notification = array('title' =>'test title',
'body' => 'hello message');
$notifdata = array('title' =>'test title data',
'body' => 'hello',
'image' => 'path'
);
$fcmNotification = array (
'to'        => $token, 
'notification' => $notification,
'data' => $notifdata 
);

$headers = array( 'Authorization: key='.$apiKey, 'Content-Type: application/json');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$fcmUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification));
$result = curl_exec($ch);
curl_close($ch);

在我的Login Activity中,我使用以下代码来获取我的注册ID

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( this,  new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
device_key = instanceIdResult.getToken();
Log.e(TAG, device_key);
}
});

这是我MyFirebaseMessagingService

public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
}
@Override
public void onMessageReceived(RemoteMessage message) {
super.onMessageReceived(message);
sendMyNotification(message.getNotification().getBody());
}

private void sendMyNotification(String message) {
Intent intent = new Intent(this, NotificationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
String channelId = "Default";

Uri soundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder builder = new  NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("My App")
.setContentText(message)
.setAutoCancel(true)
.setSound(soundUri)
.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId, "Default channel", NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel);
}
manager.notify(0, builder.build());
}

}

我在 Android 模拟器上收到通知,但在真实设备中我没有收到任何通知。

curl_close之前添加错误output

echo curl_error($ch);

相关内容

  • 没有找到相关文章

最新更新