可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
How to intent from parse push notification. i f anybody implemented parse push please help.
Parse.initialize(Splash.this,"id","id");
ParseInstallation.getCurrentInstallation().saveInBackground();
PushService.setDefaultPushCallback(Splash.this, ParsePush.class);
implementing like this.
can't get any values in jsonData.
public class ParsePush extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ParseInstallation.getCurrentInstallation().saveInBackground();
Intent intent = getIntent();
Bundle extras = intent.getExtras();
String jsonData = extras.getString("com.parse.Data");
System.out.println("Data Json : " + jsonData);
}
}
need to implement an intent from the push notification (parse).
that is need to show an activity on clicking the push.. please help.
回答1:
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.
回答2:
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);
}
回答3:
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();
}
回答4:
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" />