There are few steps which we have to follow to implement Push Notification.
Step 1: First we will write the api to get token and device type . Here is the controller code of push notification.
public function pushNotification() {
$validator = Validator::make(Request::all(), [
'userId'=>'required',
'accessToken'=>'required',
'senderId'=>'required',
'token'=>'required',
'deviceType'=>'required'
]);
if ($validator->fails()) {
#display error if validation fails
$this->status = 'Validation fails';
$this->message = 'arguments missing';
} else {
$userId =Request::get('userId');
$accessToken=Request::get('accessToken');
$senderId=Request::get('senderId');
$token=Request::get('token');
$deviceType=Request::get('deviceType');
$checkUserStatus =User::where('id','=',$userId)->first();
if(!empty($checkUserStatus)){
if( $deviceType=='Android'){
$setMessage='You have a new activity on KarmaCircles.';
$pushNotificationStatus=NotificationHelper::androidPushNotification($token,$setMessage);
$this->status = $pushNotificationStatus;
$this->message = 'Push Notification Message';
}else{
$pushNotificationStatus=NotificationHelper::iphonePushNotification($token,$setMessage);
$this->status = $pushNotificationStatus;
$this->message = 'Push Notification Message';
}
}else{
$this->status = 'Failure';
$this->message = 'There is no such user available';
}
}
return Response::json(array(
'status'=>$this->status,
'message'=>$this->message
));
}
Now we use NotificationHelper to perform notification.
Step 2:
In NotificationHelper.php the code is:
#======================================================================================
/**
* Android Push Notifications using Google Cloud Messaging (GCM)
* Send push notification from web server to registered android devices.
*
* @param array data
* @param string message
* @param array custom_fields
* @return string status
*/
public static function androidPushNotification ($deviceToken, $setMessage = "Hello Android Rohit!"){
// Set parameters:
$apiKey = 'AIzaSyBgiOAHXJRTCbehKUprmqFS89ZuHZ0vTJQ'; // API key from Google Developer Console
$gcmUrl = 'https://android.googleapis.com/gcm/send';
// Get the device token (fetch from database for example):
$regid = $deviceToken;
// Set message:
$message = $setMessage;
// Send message:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $gcmUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
)
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(
array(
'registration_ids' => array($regid),
'data' => array(
'message' => $message
)
),
JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP
)
);
$result = curl_exec($ch);
Log::info("curl result ::". var_;export($result,TRUE) );
if ($result === FALSE){
$status = 'failed: ' . curl_error($ch);
}
else
{
echo $status = 'success';
}
// Close connection
curl_close($ch);
Log::info("returning ::". $status );
return $status;
}
By this way we can implementing push notification using laravel 4.x
0 Comment(s)