繁体   English   中英

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

[英]Push Notification to Android App using PHP

我正在尝试使用 PHP 创建推送通知。 我已经创建了我的 firebase 帐户,并在我的 android 应用程序中添加了需要添加的内容。 我使用 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 class

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 模拟器上收到通知,但在真实设备中我没有收到任何通知。

output之前添加错误curl_close

echo curl_error($ch);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM