如何在我的应用程序中添加解析通知?

时间:2015-02-07 10:57:25

标签: android push-notification

我有一个应用程序,我想在其中使用解析通知。 我也有一个正确的示例解析推送通知。我怎么能在哪里用它推它呢? 我的解析应用程序有以下代码:

public class ParseApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // Add your initialization code here
        Parse.initialize(this, " ", " ");


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

还有:

public class ParseStarterProjectActivity extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // To track statistics around application
    ParseAnalytics.trackAppOpened(getIntent());

    // inform the Parse Cloud that it is ready for notifications
    PushService.setDefaultPushCallback(this, ParseStarterProjectActivity.class);
    ParseInstallation.getCurrentInstallation().saveInBackground();

}

它工作正常,但我不知道我可以在这个代码中添加到我的主应用程序中。

2 个答案:

答案 0 :(得分:0)

目前,由于您没有使用频道或高级定位,您可以将代码放在onCreate方法中,推送通知也可以。通过这种方式,您可以从解析网站发送推送。

如果您想将推送发送到设备的子集,您可以使用频道(您可以让用户订阅/取消订阅和发送推送)或高级定位。通过这些方式,无论何时发生事件,您都可以通过解析网站或应用程序本身向所需设备发送推送。

答案 1 :(得分:0)

您需要编写一个自定义接收器,它可以读取您的推送通知,从而采取相应的行动。

您可以按照以下步骤在应用程序中启用解析通知解析。我假设您已经在项目中包含了相关的jar文件(在我的例子中为Parse-1.7.1.jar)。

Step-1:在Application类的onCreate()函数中,声明 Parse.initialize(this,Constants.PUSH_NOTIFICATION_APPLICATION_ID,Constants.PUSH_NOTIFICATION_CLIENT_ID);

用您的凭据替换PUSH_NOTIFICATION_APPLICATION_ID和PUSH_NOTIFICATION_CLIENT_ID。

步骤2:在清单文件中包含以下行。

<service android:name="com.parse.PushService" />
<receiver
    android:name="path to class.CustomReceiver"
    android:exported="false"
    android:icon="@drawable/notification_icon"
    android:logo="@drawable/notification_icon" >
    <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" />
        <category android:name="your package name" />
    </intent-filter>
</receiver>

Step-3:创建CustomReceiver类,如:

public class CustomReceiver extends ParsePushBroadcastReceiver {

private final String TAG = "ParseNotification";
private String msg = "";
private String[] split = new String[2];

public static SharedPreferences settingsUserProfile;
private String promoOfferUrl = null;

public void onPushOpen(Context context, Intent intent) {

    try {
        String action = intent.getAction();
        String channel = intent.getExtras().getString("com.parse.Channel");
        JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));

        Log.d(TAG, "got action: " + action + " on channel: " + channel + " with:");
        Iterator itr = json.keys();
        while(itr.hasNext()) {
            String key = (String) itr.next();
            Log.d(TAG, "..." + key + " => " + json.getString(key));
            if(key.equals("move")) {
                msg = json.getString(key);
            }
        }
    } catch (JSONException e) {
        Log.d(TAG, "JSON Exception: " + e.getMessage());
    }

    if(msg.equals("1")) {
    // move to Activity X
    } else {
    // move to Activity Y
    }
}

第4步:编写推送通知,如:

{
"alert": "Hello World",
"title": "bye bye",
"move": "1"
}

您必须转到Parse UI并在“编写消息”部分中,选择JSON作为消息类型并粘贴上面的示例。就我而言,我根据“移动”参数的值转移到不同的活动。您可以相应地设计JSON,从而修改代码以满足您的需求。

希望它能解决您的问题。