آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

pushnotifiacation and alarmManager

parand  10 سال پیش  10 سال پیش
0 0

 سلام دوستان به یک  مشکلی در مورد pushnotification  و alarmManager بر خوردم کد ها را هم گذاشتم تا بهتر متوجه بشید

قرار هست بر اساس زمان مشخص مثلا هر 1 ساعت یم بار درخواست سمت سرور بفرستیم اگر پیام و خبر جدیدی باشه بالای گوشی یک آیکون نمایش داده بشه کلیت کار این بود که عرض کردم

حالا مشکل ها این هست که 1- به سرور درخواست ارسال داده میشه جواب را بر میگرداند ولی اون آیکون را نمایش نمیده

2-تا گوشی ریست نشه کار نمیکنه

از بعد از این کار برای خروج از نرم افزار وقتی نرم افزار بسته شده بازدوباره باز میشه(البته نه روی همه گوشی ها)

3-وقتی گوشی ریست میشه و همه چی کار میکنه بدون اینکه روی آیکون کلیک کنم نرم افزار خودش Run میشه

واقعا دیگه نمیدونم چکار کنم و فقط همین قسمت از پروژه باقی مانده

میشه یکی کمک کنه و حلش کنه من که دیگه نمیدونم باید چکار کنم

در ضمن تمام کدها مطابق کدهای استاد هست این را گذاشتم گفتم شادی کار کنه ولی متاسفانه کار نکرد

در ضمن باید طوری باشه که اگر گوشی Lock هم باشه کار کنه

با سپاس

package com.iran.soft;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
public class BootCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, final Intent intent) {

        C2D service = new C2D()
                .key("validKey")
                .url("http://192.138.1.10/admin-service/index.php")
                .interval(1000)
                .listener(new C2D.Listener() {

                    public void onFail(int statusCode) {
                        Log.i("LOGFAIL", "code :" + statusCode);
                    }
                    public void onDataReceive(String data) {
                        Log.i("LOGDATE", "Data :" + data);
                        if (data.contains("1")) {
                            Log.i("LOGD", data); //ta in ghesmat kar mekone vali dg Toast ro nehson nemede
                            Toast.makeText(G.context, "You have some news", Toast.LENGTH_SHORT).show();
                            Log.i("ALARM", "ALARM");

                            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(G.context)
                                    .setSmallIcon(R.drawable.ic_launcher) // notification icon
                                    .setContentTitle("Notification!") // title for notification
                                    .setContentText("New OFF FROM SERVER") // message for notification
                                    .setAutoCancel(true); // clear notification after click
                            Intent intent = new Intent(G.context, ActivityMain.class);
                            //PendingIntent pi = PendingIntent.getActivity(G.context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
                            PendingIntent pi = PendingIntent.getService(G.context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                            mBuilder.setContentIntent(pi);
                            NotificationManager mNotificationManager = (NotificationManager) G.context.getSystemService(Context.NOTIFICATION_SERVICE);
                            mNotificationManager.notify(0, mBuilder.build());
                            G.alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 2000, pi);
                            Log.i("Log", "STR :" + data);
                        }
                        else
                        {
                            Log.i("Log", "SORRY :" + data);
                        }
                    }

                }).start();
    }
}

package com.iran.soft;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;


public class C2D {

    public static final int          PROTOCOL_EXCEPTION = -1;
    public static final int          IO_EXCEPTION       = -2;
    public static final int          UNKNOWN_EXCEPTION  = -3;
    private Listener                 listener;
    private String                   key;
    private String                   url;

    private ArrayList<NameValuePair> inputArguments     = new ArrayList<NameValuePair>();
    private long                     interval;
    private boolean                  enable             = true;


    public static interface Listener {

        public void onDataReceive(String data);


        public void onFail(int statusCode);

    }


    public C2D listener(Listener value) {
        listener = value;
        return this;
    }


    public C2D interval(long value) {
        interval = value;
        return this;
    }


    public C2D key(String value) {
        key = value;
        return this;
    }


    public C2D url(String value) {
        url = value;
        return this;
    }


    public void disable()
    {
        enable = false;
    }


    public void enable()
    {
        enable = true;
        start();
    }


    public C2D start()
    {
        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (enable) {
                    try {
                        check();
                        Thread.sleep(interval);
                    }
                    catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.start();
        return this;
    }


    public void check() {
        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    HttpParams params = new BasicHttpParams();
                    HttpConnectionParams.setConnectionTimeout(params, 1000);
                    HttpConnectionParams.setSoTimeout(params, 1000);
                    HttpClient client = new DefaultHttpClient(params);
                    HttpPost request = new HttpPost(url);
                    inputArguments.clear();
                    inputArguments.add(new BasicNameValuePair("key", key));
                    request.setEntity(new UrlEncodedFormEntity(inputArguments));
                    HttpResponse httpResponse = (HttpResponse) client.execute(request);
                    String data = streamToString(httpResponse.getEntity().getContent());

                    if (listener != null) {
                        listener.onDataReceive(data);
                        return;
                    }
                }
                catch (ClientProtocolException e) {
                    if (listener != null) {
                        listener.onFail(PROTOCOL_EXCEPTION);
                    }
                }
                catch (IOException e) {
                    if (listener != null) {
                        listener.onFail(IO_EXCEPTION);
                    }
                }
                catch (Exception e) {
                    if (listener != null) {
                        //listener.onFail(UNKNOWN_EXCEPTION);
                    }
                }
            }
        });

        thread.start();
    }


    private String streamToString(InputStream inputStream) {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder stringBuffer = new StringBuilder();

        String line = null;
        try {
            while ((line = bufferedReader.readLine()) != null) {
                stringBuffer.append((line + "\n"));
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
        return stringBuffer.toString();
    }
}

 

0 0
کسی نمیتونه کمکی کنه در این مورد؟ (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .