How to get parsing alerts on an Android device using parse.com

How to wash off parsing push notifications. i f anyone implemented parsing please help.

Parse.initialize(Splash.this,"id","id");
ParseInstallation.getCurrentInstallation().saveInBackground();
PushService.setDefaultPushCallback(Splash.this, ParsePush.class);

using this.

cannot get 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);
    }

}

it is necessary to realize the intention from a push notification (parsing). that is, you need to show activity when you click on push .. please help.

+4
source share
4 answers

Use 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 - the activity that you need to open when you click on the notification.

In the 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>

MainActivity, .

Bundle mBundle = getIntent().getExtras();
if (mBundle != null) {
    String mData = mBundle.getString("com.parse.Data");
    System.out.println("DATA : xxxxx : " + mData);
}
+5

.

  <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>

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));

    }

json- , . , 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

              }
            });

, push- "", , , - .

+5

Try entering a 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();
    }
0
source

You can download the full code from here.

Add library of Google play services depending

Initialize analysis 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 the following permissions to 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 the following things:

    <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" />
0
source

Source: https://habr.com/ru/post/1524475/


All Articles