Register Devices
Users need to be uniquely identified to receive push notifications.
Every user is assigned a unique device token that you can use to push it at any given time. Once the user has been assigned a device token, it should be stored in your application's backend database.
Please select your Android project type for the appropriate instructions:
Simply add the following blocking code to your application when you're ready to register the user for notifications:
String deviceToken = Pushy.register(MainActivity.this);
val deviceToken = Pushy.register(this@MainActivity)
This method returns a unique device token you can use to send notifications to this specific user's device.
Note: Pushy.register(Context)
is a synchronous, blocking call, so make sure to only execute it from within a background thread (see code sample below). Also, please make sure to pass an Activity
context into this method for Android 13 notification runtime permission support.
Asynchronous Implementation
Add the following code to your application when you're ready to register the user for notifications:
if (!Pushy.isRegistered(this)) {
new RegisterForPushNotificationsAsync(this).execute();
}
if (!Pushy.isRegistered(this)) {
RegisterForPushNotificationsAsync(this).execute()
}
Copy the following RegisterForPushNotificationsAsync()
async implementation and modify it accordingly to send device tokens to your backend server.
private class RegisterForPushNotificationsAsync extends AsyncTask<Void, Void, Object> {
Activity mActivity;
public RegisterForPushNotificationsAsync(Activity activity) {
this.mActivity = activity;
}
protected Object doInBackground(Void... params) {
try {
// Register the device for notifications (replace MainActivity with your Activity class name)
String deviceToken = Pushy.register(MainActivity.this);
// Registration succeeded, log token to logcat
Log.d("Pushy", "Pushy device token: " + deviceToken);
// Send the token to your backend server via an HTTP GET request
new URL("https://{YOUR_API_HOSTNAME}/register/device?token=" + deviceToken).openConnection();
// Provide token to onPostExecute()
return deviceToken;
}
catch (Exception exc) {
// Registration failed, provide exception to onPostExecute()
return exc;
}
}
@Override
protected void onPostExecute(Object result) {
String message;
// Registration failed?
if (result instanceof Exception) {
// Log to console
Log.e("Pushy", result.toString());
// Display error in alert
message = ((Exception) result).getMessage();
}
else {
message = "Pushy device token: " + result.toString() + "\n\n(copy from logcat)";
}
// Registration succeeded, display an alert with the device token
new android.app.AlertDialog.Builder(this.mActivity)
.setTitle("Pushy")
.setMessage(message)
.setPositiveButton(android.R.string.ok, null)
.show();
}
}
class RegisterForPushNotificationsAsync(activity: Activity) : AsyncTask<Void, Void, Any>() {
var activity: Activity = activity;
override fun doInBackground(vararg params: Void): Any {
try {
// Register the device for notifications
val deviceToken = Pushy.register(activity)
// Registration succeeded, log token to logcat
Log.d("Pushy", "Pushy device token: " + deviceToken)
// Send the token to your backend server via an HTTP GET request
URL("https://{YOUR_API_HOSTNAME}/register/device?token=" + deviceToken).openConnection()
// Provide token to onPostExecute()
return deviceToken
} catch (exc: Exception) {
// Registration failed, provide exception to onPostExecute()
return exc
}
}
override fun onPostExecute(result: Any) {
var message: String
// Registration failed?
if (result is Exception) {
// Log to console
Log.e("Pushy", result.message)
// Display error in alert
message = result.message.toString()
}
else {
// Registration success, result is device token
message = "Pushy device token: " + result.toString() + "\n\n(copy from logcat)"
}
// Display dialog
android.app.AlertDialog.Builder(activity)
.setTitle("Pushy")
.setMessage(message)
.setPositiveButton(android.R.string.ok, null)
.show()
}
}