How to intent from parse push notification. i f anybody implemented parse push please help.
Parse.initialize(Splash.this,\"id\",\"id\");
ParseInstallation.ge
You can download complete code from here
Add Google play service lib in dependency
Initialize Parse in Application Class
Parse.initialize(this, getResources().getString(R.string.applicationid), getResources().getString(R.string.clientkey));
ParsePush.subscribeInBackground("", new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
} else {
Log.e("com.parse.push", "failed to subscribe for push", e);
}
}
});
Add Following Permissions in AndroidMainifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!--Change with your package name-->
<permission android:name="com.nkdroid.android.pushnotification.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<!--Change with your package name-->
<uses-permission android:name="com.nkdroid.android.pushnotification.permission.C2D_MESSAGE" />
Add following things also
<receiver android:name="com.parse.ParseBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<!--Change with your package name-->
<category android:name="com.nkdroid.android.pushnotification" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false">
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<!-- add project number of google console project-->
<meta-data android:name="com.parse.push.gcm_sender_id" android:value="@string/sender_id" />
<!-- replace icon with your push icon identifier -->
<meta-data android:name="com.parse.push.notification_icon" android:resource="@mipmap/ic_launcher" />
Use like this :
public class Application extends android.app.Application {
public Application() {
}
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "YOUR_APP_ID", "YOUR_CLIENT_KEY");
PushService.setDefaultPushCallback(this, MainActivity.class);
}
}
//MainActivity.java - Activity you need to open when the notification is clicked.
In your Manifest file add this application.
<application android:name="com.parse.tutorials.pushnotifications.Application"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.parse.tutorials.pushnotifications.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
And add this line in your MainActivity class which you need to open when the notification is clicked.
Bundle mBundle = getIntent().getExtras();
if (mBundle != null) {
String mData = mBundle.getString("com.parse.Data");
System.out.println("DATA : xxxxx : " + mData);
}
You have to write a parse broadcast receiver in order to receive notification.. Write in your manifest
<receiver
android:name="com.example.package.ParseBroadcastReceiver"
android:exported="false"
android:enabled="true">
<intent-filter>
<action android:name="com.example.package.MESSAGE" />
</intent-filter>
</receiver>
then define a broadcast receiver
public class ParseBroadcastReceiver extends BroadcastReceiver{
public static final String ACTION = "com.example.package.MESSAGE";
public static final String PARSE_EXTRA_DATA_KEY = "com.parse.Data";
public static final String PARSE_JSON_CHANNEL_KEY = "com.parse.Channel";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
String channel = intent.getExtras().getString(PARSE_JSON_CHANNEL_KEY);
JSONObject json = new JSONObject(intent.getExtras().getString(PARSE_EXTRA_DATA_KEY));
}
Now this json object will contain the data that you have send from parse.. For instance if you have to send notification using javascript api
Parse.Push.send({where: query, // Set our Installation query
data: {
triggerKey:triggerValue,
objectType:"android",
action:"com.example.package.MESSAGE"
}
},{
success: function() {
// Push was successful
},
error: function(error) {
// Handle error
}
});
Note that in your push notification you have to mention the "action" key and it should be same as the one you have mentioned in your broadcast receiver intent filter.
Try below code in your activity:
Parse.initialize(this, Constants.PARSE_APPLICATION_ID,
Constants.PARSE_CLIENT_ID);
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// If you would like all objects to be private by default, remove this line.
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
// To track statistics around application
ParseAnalytics.trackAppOpened(getIntent());
// inform the Parse Cloud that it is ready for notifications
PushService.setDefaultPushCallback(this, TestActivity.class);
try {
Bundle b = getIntent().getExtras();
JSONObject jsonObject = new JSONObject(b.getString("com.parse.Data"));
Toast.makeText(getApplicationContext(), "" + jsonObject.getString("alert"), Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}