繁体   English   中英

如何在Android中使用parse.com发送时间触发通知?

[英]How to send Time Triggered Notification using parse.com in Android?

我已经使用解析实现了推送通知。 但我想在特定时区的特定时间向用户发送通知。 我知道我们可以从仪表板一次向所有设备发送通知。 但是我们可以从应用程序中触发通知吗?

现在我只检查系统日期并显示我的Parse类匹配的数据。

但我想在特定时间向用户发送通知!

获取系统日期的代码!

Calendar c = Calendar.getInstance();

    SimpleDateFormat df = new SimpleDateFormat("ddMMyyyy");
    final String formattedDate = df.format(c.getTime());

检查日期并显示相关信息的代码!

ArrayList<HashMap<String, String>> _temparrayList = HelperFile
            .loadArrayListFromFile(MainActivity.this, HelperFile.DAILYVERSE);

    if (_temparrayList != null) {
        for (int i = 0; i < _temparrayList.size(); i++) {
            HashMap<String, String> map = _temparrayList.get(i);

            if (formattedDate.equals(map.get("date"))) {
                verse = map.get("verse");
                book = map.get("book");
                book_text.setText(book);
                verse_text.setText(verse);
            } else if (new_formattedDate.equals(map.get("date"))) {
                verse = map.get("verse");
                book = map.get("book");
                book_text.setText(book);
                verse_text.setText(verse);
            }

            else {
                value = true;
                new RemoteDataTask().execute();

            }

        }
    } else {
        verse_text.setText("Data Yet To Update, Please Refresh");
        refresh.setVisibility(View.VISIBLE);
        new RemoteDataTask().execute();

    }

从Parse进行查询的Async任务!

private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        if (value == false) {
            mProgressDialog = new ProgressDialog(MainActivity.this);
            mProgressDialog.setTitle("Daily Verse Is Updating");
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.show();
        }

    }

    @Override
    protected Void doInBackground(Void... params) {
        // Locate the class table named "Country" in Parse.com
        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
                "DailyVerse");
        query.orderByDescending("date");
        try {
            ob = query.find();
        } catch (ParseException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // Retrieve object "name" from Parse.com database
        ArrayList<HashMap<String, String>> arrayList = new ArrayList<HashMap<String, String>>();
        for (ParseObject country : ob) {
            HashMap<String, String> map = new HashMap<String, String>();
            String book = (String) country.get("book");
            String verse = (String) country.get("verse");
            String date = (String) country.get("date").toString();

            map.put("book", book);
            map.put("verse", verse);
            map.put("date", date);

            arrayList.add(map);
        }
        HelperFile.writeArrayListToFile(arrayList, MainActivity.this,
                HelperFile.DAILYVERSE);
        if (value == false) {
            mProgressDialog.dismiss();
        }

    }
}

所以问题是如何在每天上午8:00向用户发送通知?

你将在你的Android应用程序中构建一种“工作者”或“工作”。 我认为这不是最好的选择。 但要做到这一点,你应该实现+ service并调用startService方法。 我已经使用过Parse,我通常通过我的webservice按下发送来发送用户通知,而我的worker / job在我的webservice(后端应用程序)中。

希望它对你有用! =)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM