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