কীভাবে আমি পিএইচপি ব্যাকএন্ডে নতুন গুগল ক্লাউড মেসেজিং সংহত করতে পারি ?
কীভাবে আমি পিএইচপি ব্যাকএন্ডে নতুন গুগল ক্লাউড মেসেজিং সংহত করতে পারি ?
উত্তর:
এই কোডটি পিএইচপি সিআরএল এর মাধ্যমে একাধিক নিবন্ধকরণ আইডিতে একটি জিসিএম বার্তা প্রেরণ করবে।
// Payload data you want to send to Android device(s)
// (it will be accessible via intent extras)
$data = array('message' => 'Hello World!');
// The recipient registration tokens for this notification
// https://developer.android.com/google/gcm/
$ids = array('abc', 'def');
// Send push notification via Google Cloud Messaging
sendPushNotification($data, $ids);
function sendPushNotification($data, $ids) {
// Insert real GCM API key from the Google APIs Console
// https://code.google.com/apis/console/
$apiKey = 'abc';
// Set POST request body
$post = array(
'registration_ids' => $ids,
'data' => $data,
);
// Set CURL request headers
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Initialize curl handle
$ch = curl_init();
// Set URL to GCM push endpoint
curl_setopt($ch, CURLOPT_URL, 'https://gcm-http.googleapis.com/gcm/send');
// Set request method to POST
curl_setopt($ch, CURLOPT_POST, true);
// Set custom request headers
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get the response back as string instead of printing it
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set JSON post data
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
// Actually send the request
$result = curl_exec($ch);
// Handle errors
if (curl_errno($ch)) {
echo 'GCM error: ' . curl_error($ch);
}
// Close curl handle
curl_close($ch);
// Debug GCM response
echo $result;
}
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
<?php
// Replace with the real server API key from Google APIs
$apiKey = "your api key";
// Replace with the real client registration IDs
$registrationIDs = array( "reg id1","reg id2");
// Message to be sent
$message = "hi Shailesh";
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the URL, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields));
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
echo $result;
//print_r($result);
//var_dump($result);
?>
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
একটি বড় নম্বর-না। যদি কোনও কারণে এই পিএইচপি কোডটি চালিত আপনার সার্ভারটি গুগলের সার্ভারগুলির দ্বারা ব্যবহৃত SSL শংসাপত্রটি যাচাই করতে না পারে তবে আপনি কীটি যাচাই করবেন তা আপনি সিআরএলকে বলতে পারেন। উদাহরণ: unitstep.net/blog/2009/05/05/...
এটি করা সহজ। কার্ল কোড যে পৃষ্ঠাটি Elad নব এখানে রাখুন কাজ করেছে যে। এলাদ ত্রুটি সম্পর্কে মন্তব্য করেছেন পেয়েছে সে ।
স্ট্রিং সেই প্রাপকের জন্য বার্তা প্রক্রিয়াকরণের সময় ঘটে যাওয়া একটি ত্রুটি বর্ণনা করে। সম্ভাব্য মানগুলি উপরের সারণীতে নথিবদ্ধ হিসাবে একই, প্লাস "অনুপলব্ধ" (যার অর্থ জিসিএম সার্ভারগুলি ব্যস্ত ছিল এবং সেই নির্দিষ্ট প্রাপকের জন্য বার্তাটি প্রক্রিয়া করতে পারেনি, তাই এটি আবার চেষ্টা করা যেতে পারে)।
আমি ইতিমধ্যে একটি পরিষেবা সেট আপ করেছি যা দেখে মনে হচ্ছে এটি কাজ করছে (আইএসএইচ), এবং এখনও অবধি আমার যা কিছু এসেছে তা গুগলের কাছ থেকে পাওয়া যায় না returns সম্ভবত খুব শীঘ্রই এটি পরিবর্তন হবে।
প্রশ্নের উত্তর দেওয়ার জন্য, পিএইচপি ব্যবহার করুন, জেন্ড ফ্রেমওয়ার্কটি আপনার অন্তর্ভুক্ত পথে রয়েছে তা নিশ্চিত করুন এবং এই কোডটি ব্যবহার করুন:
<?php
ini_set('display_errors',1);
include"Zend/Loader/Autoloader.php";
Zend_Loader_Autoloader::getInstance();
$url = 'https://android.googleapis.com/gcm/send';
$serverApiKey = "YOUR API KEY AS GENERATED IN API CONSOLE";
$reg = "DEVICE REGISTRATION ID";
$data = array(
'registration_ids' => array($reg),
'data' => array('yourname' => 'Joe Bloggs')
);
print(json_encode($data));
$client = new Zend_Http_Client($url);
$client->setMethod('POST');
$client->setHeaders(array("Content-Type" => "application/json", "Authorization" => "key=" . $serverApiKey));
$client->setRawData(json_encode($data));
$request = $client->request('POST');
$body = $request->getBody();
$headers = $request->getHeaders();
print("<xmp>");
var_dump($body);
var_dump($headers);
এবং সেখানে আমরা এটা আছে। জেন্ডিং ফ্রেমওয়ার্ক পিএইচপি-তে গুগলস নতুন জিসিএম ব্যবহারের একটি উদাহরণ (এটি শীঘ্রই কাজ করবে)
দীর্ঘ সময় অনুসন্ধানের পরে অবশেষে আমি ঠিক কী প্রয়োজন তা অনুধাবন করতে সক্ষম হয়েছি, সার্ভারের সাইড স্ক্রিপ্টিং ভাষা হিসাবে পিএইচপি ব্যবহার করে জিসিএমের সাথে সংযোগ স্থাপন করা, নিম্নলিখিত টিউটোরিয়ালটি আমাদের শুরু করার জন্য প্রয়োজনীয় সমস্ত কিছু কীভাবে সেটআপ করতে হবে সে সম্পর্কে একটি পরিষ্কার ধারণা দেবে জিসিএম সহ
গুগল ক্লাউড মেসেজিং (জিসিএম), পিএইচপি এবং মাইএসকিউএল ব্যবহার করে অ্যান্ড্রয়েড পুশ বিজ্ঞপ্তি
আমার জেন্ড_মোবাইল গাছের একটি শাখায় আমি এখন এটি কাজ করছি: https://github.com/mwillbanks/Zend_Mobile/tree/feature/gcm
এটি জেডএফ 1.12 দিয়ে প্রকাশিত হবে, তবে এটি কীভাবে এটি করতে পারে তার কয়েকটি দুর্দান্ত উদাহরণ দেওয়া উচিত।
এটি কীভাবে কাজ করবে তার একটি দ্রুত ডেমো এখানে ...
<?php
require_once 'Zend/Mobile/Push/Gcm.php';
require_once 'Zend/Mobile/Push/Message/Gcm.php';
$message = new Zend_Mobile_Push_Message_Gcm();
$message->setId(time());
$message->addToken('ABCDEF0123456789');
$message->setData(array(
'foo' => 'bar',
'bar' => 'foo',
));
$gcm = new Zend_Mobile_Push_Gcm();
$gcm->setApiKey('MYAPIKEY');
$response = false;
try {
$response = $gcm->send($message);
} catch (Zend_Mobile_Push_Exception $e) {
// all other exceptions only require action to be sent or implementation of exponential backoff.
die($e->getMessage());
}
// handle all errors and registration_id's
foreach ($response->getResults() as $k => $v) {
if ($v['registration_id']) {
printf("%s has a new registration id of: %s\r\n", $k, $v['registration_id']);
}
if ($v['error']) {
printf("%s had an error of: %s\r\n", $k, $v['error']);
}
if ($v['message_id']) {
printf("%s was successfully sent the message, message id is: %s", $k, $v['message_id']);
}
}
টিউটোরিয়ালগুলির অনেকগুলি পুরানো হয় এবং ডিভাইস রেজিস্ট্রেশন_আইডগুলি আপডেট করা হয় বা ডিভাইসগুলি নিবন্ধনবিহীন থাকায় এমনকি বর্তমান কোড অ্যাকাউন্ট করে না। যদি এই আইটেমগুলি চেক করা না থাকে তবে এটি শেষ পর্যন্ত এমন সমস্যাগুলির কারণ ঘটবে যা বার্তাগুলি প্রাপ্ত হতে বাধা দেয়। http://forum.loungekatt.com/viewtopic.php?t=63#p181
এছাড়াও আপনি কোড, উত্স এই টুকরা চেষ্টা করতে পারেন :
<?php
define("GOOGLE_API_KEY", "AIzaSyCJiVkatisdQ44rEM353PFGbia29mBVscA");
define("GOOGLE_GCM_URL", "https://android.googleapis.com/gcm/send");
function send_gcm_notify($reg_id, $message) {
$fields = array(
'registration_ids' => array( $reg_id ),
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=' . GOOGLE_API_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, GOOGLE_GCM_URL);
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($fields));
$result = curl_exec($ch);
if ($result === FALSE) {
die('Problem occurred: ' . curl_error($ch));
}
curl_close($ch);
echo $result;
}
$reg_id = "APA91bHuSGES.....nn5pWrrSz0dV63pg";
$msg = "Google Cloud Messaging working well";
send_gcm_notify($reg_id, $msg);
<?php
function sendMessageToPhone($deviceToken, $collapseKey, $messageText, $yourKey) {
echo "DeviceToken:".$deviceToken."Key:".$collapseKey."Message:".$messageText
."API Key:".$yourKey."Response"."<br/>";
$headers = array('Authorization:key=' . $yourKey);
$data = array(
'registration_id' => $deviceToken,
'collapse_key' => $collapseKey,
'data.message' => $messageText);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send");
if ($headers)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
var_dump($response);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
return false;
}
if ($httpCode != 200) {
return false;
}
curl_close($ch);
return $response;
}
$yourKey = "YOURKEY";
$deviceToken = "REGISTERED_ID";
$collapseKey = "COLLAPSE_KEY";
$messageText = "MESSAGE";
echo sendMessageToPhone($deviceToken, $collapseKey, $messageText, $yourKey);
?>
উপরের স্ক্রিপ্টে কেবল পরিবর্তন করুন:
"YOURKEY" এপিআই কনসোলের সার্ভার কী তে কী।
আপনার ডিভাইসের রেজিস্ট্রেশন আইডি
"COLLAPSE_KEY" সহ "REGISTERED_ID"
যা আপনি যে বার্তায় পাঠাতে চান তার সাথে "বার্তা" প্রয়োজন
আপনি যদি এতে কোনও সমস্যা পেয়ে থাকেন তবে আমাকে জানতে দিন আমি একই স্ক্রিপ্টটি ব্যবহার করে সফলভাবে বিজ্ঞপ্তি পেতে সক্ষম হয়েছি।
আপনি এই পিএইচপি গ্রন্থাগারটি প্যাকেজিস্টে উপলভ্য ব্যবহার করতে পারেন:
https://github.com/CoreProc/gcm-php
এটি ইনস্টল করার পরে আপনি এটি করতে পারেন:
$gcmClient = new GcmClient('your-gcm-api-key-here');
$message = new Message($gcmClient);
$message->addRegistrationId('xxxxxxxxxx');
$message->setData([
'title' => 'Sample Push Notification',
'message' => 'This is a test push notification using Google Cloud Messaging'
]);
try {
$response = $message->send();
// The send() method returns a Response object
print_r($response);
} catch (Exception $exception) {
echo 'uh-oh: ' . $exception->getMessage();
}
এখানে কোডমোনকিআরইউ থেকে আমি একটি গ্রন্থাগার স্থাপন করেছি।
আমি যে কারণটি ভোগ করেছি তার কারণ হ'ল গুগলের ক্ষতিকারক ব্যাক অফের প্রয়োজন। আমি বার্তাগুলি সারি করার জন্য একটি রেডিস সার্ভার ব্যবহার করি এবং একটি নির্দিষ্ট সময়ের পরে পুনরায় পাঠাতে পারি।
আইওএস সমর্থন করার জন্য আমি এটি আপডেট করেছি।
@ এলাদ নাভা দ্বারা পোস্ট করা উপরের পিএইচপি কোডের জন্য অ্যান্ড্রয়েড কোড এখানে
মেইনএ্যাকটিভিটি.জভা (লঞ্চার ক্রিয়াকলাপ)
public class MainActivity extends AppCompatActivity {
String PROJECT_NUMBER="your project number/sender id";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GCMClientManager pushClientManager = new GCMClientManager(this, PROJECT_NUMBER);
pushClientManager.registerIfNeeded(new GCMClientManager.RegistrationCompletedHandler() {
@Override
public void onSuccess(String registrationId, boolean isNewRegistration) {
Log.d("Registration id", registrationId);
//send this registrationId to your server
}
@Override
public void onFailure(String ex) {
super.onFailure(ex);
}
});
}
}
GCMClientManager.java
public class GCMClientManager {
// Constants
public static final String TAG = "GCMClientManager";
public static final String EXTRA_MESSAGE = "message";
public static final String PROPERTY_REG_ID = "your sender id";
private static final String PROPERTY_APP_VERSION = "appVersion";
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
// Member variables
private GoogleCloudMessaging gcm;
private String regid;
private String projectNumber;
private Activity activity;
public GCMClientManager(Activity activity, String projectNumber) {
this.activity = activity;
this.projectNumber = projectNumber;
this.gcm = GoogleCloudMessaging.getInstance(activity);
}
/**
* @return Application's version code from the {@code PackageManager}.
*/
private static int getAppVersion(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (NameNotFoundException e) {
// should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
// Register if needed or fetch from local store
public void registerIfNeeded(final RegistrationCompletedHandler handler) {
if (checkPlayServices()) {
regid = getRegistrationId(getContext());
if (regid.isEmpty()) {
registerInBackground(handler);
} else { // got id from cache
Log.i(TAG, regid);
handler.onSuccess(regid, false);
}
} else { // no play services
Log.i(TAG, "No valid Google Play Services APK found.");
}
}
/**
* Registers the application with GCM servers asynchronously.
* <p>
* Stores the registration ID and app versionCode in the application's
* shared preferences.
*/
private void registerInBackground(final RegistrationCompletedHandler handler) {
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(getContext());
}
InstanceID instanceID = InstanceID.getInstance(getContext());
regid = instanceID.getToken(projectNumber, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.i(TAG, regid);
// Persist the regID - no need to register again.
storeRegistrationId(getContext(), regid);
} catch (IOException ex) {
// If there is an error, don't just keep trying to register.
// Require the user to click a button again, or perform
// exponential back-off.
handler.onFailure("Error :" + ex.getMessage());
}
return regid;
}
@Override
protected void onPostExecute(String regId) {
if (regId != null) {
handler.onSuccess(regId, true);
}
}
}.execute(null, null, null);
}
/**
* Gets the current registration ID for application on GCM service.
* <p>
* If result is empty, the app needs to register.
*
* @return registration ID, or empty string if there is no existing
* registration ID.
*/
private String getRegistrationId(Context context) {
final SharedPreferences prefs = getGCMPreferences(context);
String registrationId = prefs.getString(PROPERTY_REG_ID, "");
if (registrationId.isEmpty()) {
Log.i(TAG, "Registration not found.");
return "";
}
// Check if app was updated; if so, it must clear the registration ID
// since the existing regID is not guaranteed to work with the new
// app version.
int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
int currentVersion = getAppVersion(context);
if (registeredVersion != currentVersion) {
Log.i(TAG, "App version changed.");
return "";
}
return registrationId;
}
/**
* Stores the registration ID and app versionCode in the application's
* {@code SharedPreferences}.
*
* @param context application's context.
* @param regId registration ID
*/
private void storeRegistrationId(Context context, String regId) {
final SharedPreferences prefs = getGCMPreferences(context);
int appVersion = getAppVersion(context);
Log.i(TAG, "Saving regId on app version " + appVersion);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(PROPERTY_REG_ID, regId);
editor.putInt(PROPERTY_APP_VERSION, appVersion);
editor.commit();
}
private SharedPreferences getGCMPreferences(Context context) {
// This sample app persists the registration ID in shared preferences, but
// how you store the regID in your app is up to you.
return getContext().getSharedPreferences(context.getPackageName(),
Context.MODE_PRIVATE);
}
/**
* Check the device to make sure it has the Google Play Services APK. If
* it doesn't, display a dialog that allows users to download the APK from
* the Google Play Store or enable it in the device's system settings.
*/
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getContext());
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, getActivity(),
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
}
return false;
}
return true;
}
private Context getContext() {
return activity;
}
private Activity getActivity() {
return activity;
}
public static abstract class RegistrationCompletedHandler {
public abstract void onSuccess(String registrationId, boolean isNewRegistration);
public void onFailure(String ex) {
// If there is an error, don't just keep trying to register.
// Require the user to click a button again, or perform
// exponential back-off.
Log.e(TAG, ex);
}
}
}
পুশনাটিফিকেশন সার্ভিস.জভা (বিজ্ঞপ্তি জেনারেটর)
public class PushNotificationService extends GcmListenerService{
public static int MESSAGE_NOTIFICATION_ID = 100;
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
sendNotification("Hi-"+message, "My App sent you a message");
}
private void sendNotification(String title, String body) {
Context context = getBaseContext();
NotificationCompat.Builder mBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher).setContentTitle(title)
.setContentText(body);
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(MESSAGE_NOTIFICATION_ID, mBuilder.build());
}
}
Andro আইডি
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="com.example.gcm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".PushNotificationService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="package.gcmdemo" />
</intent-filter>
</receiver>
</application>
এটা ব্যবহার কর
function pnstest(){
$data = array('post_id'=>'12345','title'=>'A Blog post', 'message' =>'test msg');
$url = 'https://fcm.googleapis.com/fcm/send';
$server_key = 'AIzaSyDVpDdS7EyNgMUpoZV6sI2p-cG';
$target ='fO3JGJw4CXI:APA91bFKvHv8wzZ05w2JQSor6D8lFvEGE_jHZGDAKzFmKWc73LABnumtRosWuJx--I4SoyF1XQ4w01P77MKft33grAPhA8g-wuBPZTgmgttaC9U4S3uCHjdDn5c3YHAnBF3H';
$fields = array();
$fields['data'] = $data;
if(is_array($target)){
$fields['registration_ids'] = $target;
}else{
$fields['to'] = $target;
}
//header with content_type api key
$headers = array(
'Content-Type:application/json',
'Authorization:key='.$server_key
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
if ($result === FALSE) {
die('FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);
return $result;
}
আমি জানি এটি একটি দেরি করা উত্তর, তবে যারা বর্তমান এফসিএম ফর্ম্যাট (জিসিএম হ্রাস করা হয়নি) এর সাথে একই জাতীয় অ্যাপ্লিকেশন বিকাশ করতে চান তাদের পক্ষে এটি কার্যকর হতে পারে।
নিম্নলিখিত পিএইচপি কোডটি বিষয় ভিত্তিক পডকাস্ট প্রেরণে ব্যবহার করা হয়েছে। উল্লিখিত চ্যানেল / টপিসের সাথে নিবন্ধিত সমস্ত অ্যাপ্লিকেশনগুলি এই পুশ বিজ্ঞপ্তিটি গ্রহণ করবে।
<?php
try{
$fcm_token = 'your fcm token';
$service_url = 'https://fcm.googleapis.com/fcm/send';
$channel = '/topics/'.$adminChannel;
echo $channel.'</br>';
$curl_post_body = array('to' => $channel,
'content_available' => true,
'notification' => array('click_action' => 'action_open',
'body'=> $contentTitle,
'title'=>'Title '.$contentCurrentCat. ' Updates' ,
'message'=>'44'),
'data'=> array('click_action' => 'action_open',
'body'=>'test',
'title'=>'test',
'message'=>$catTitleId));
$headers = array(
'Content-Type:application/json',
'Authorization:key='.$fcm_token);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $service_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($curl_post_body));
$result = curl_exec($ch);
if ($result === FALSE) {
die('FCM Send Error: ' . curl_error($ch));
echo 'failure';
}else{
echo 'success' .$result;
}
curl_close($ch);
return $result;
}
catch(Exception $e){
echo 'Message: ' .$e->getMessage();
}
?>