2013-10-20 9 views
17

Android uygulama geliştirme konusunda çok yeniyim. Birçok öğreticinin yardımıyla webview, actionbar ve GCM ile bir uygulama oluşturdum. Her şey iyi çalışıyor. Ancak "Yapıcı bildirimi kullanımdan kaldırıldı" uyarısını alıyorum. Notification.builder'dan geçtim. ancak kodlarımı yeni bildirim bildireniyle değiştiremiyorum. BirisiYapıcı bildirimi onaylanmadı

public class GCMIntentService extends GCMBaseIntentService { 

private static final String TAG = "GCMIntentService"; 

public GCMIntentService() { 
    super(SENDER_ID); 
} 

/** 
* Method called on device registered 
**/ 
@Override 
protected void onRegistered(Context context, String registrationId) { 
    Log.i(TAG, "Device registered: regId = " + registrationId); 
    displayMessage(context, "Your device registred with GCM"); 
    Log.d("NAME"," "+ MainActivity.name); 
    ServerUtilities.register(context, MainActivity.name, MainActivity.email, MainActivity.AndroidVersion, MainActivity.AndroidID, MainActivity.manufacturer, MainActivity.model, registrationId); 
} 

/** 
* Method called on device un registred 
* */ 
@Override 
protected void onUnregistered(Context context, String registrationId) { 
    Log.i(TAG, "Device unregistered"); 
    displayMessage(context, getString(R.string.gcm_unregistered)); 
    ServerUtilities.unregister(context, registrationId); 
} 

/** 
* Method called on Receiving a new message 
* */ 
@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString("price"); 

    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
* Method called on receiving a deleted message 
* */ 
@Override 
protected void onDeletedMessages(Context context, int total) { 
    Log.i(TAG, "Received deleted messages notification"); 
    String message = getString(R.string.gcm_deleted, total); 
    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
* Method called on Error 
* */ 
@Override 
public void onError(Context context, String errorId) { 
    Log.i(TAG, "Received error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_error, errorId)); 
} 

@Override 
protected boolean onRecoverableError(Context context, String errorId) { 
    // log message 
    Log.i(TAG, "Received recoverable error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_recoverable_error, 
      errorId)); 
    return super.onRecoverableError(context, errorId); 
} 

/** 
* Issues a notification to inform the user that server has sent a message. 
*/ 
private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.ic_launcher; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) 
      context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 

    String title = context.getString(R.string.app_name); 

    Intent notificationIntent = new Intent(context, MainActivity.class); 
    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
      Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = 
      PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    // Play default notification sound 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    //notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "your_sound_file_name.mp3"); 

    // Vibrate if vibrate is enabled 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notificationManager.notify(0, notification);  

} 

} 

* * Manifest sdkversion 8 Bunu değil mi Anlamı API 11. itibariyle önerilmemektedir Bildirimi yapıcı kullanmayı denediğiniz

cevap

34

ila 18 ..... bana yardımcı olabilir Artık desteklenmiyor ve kullanılmamalıdır.

Notification notification = new Notification.Builder(context) 
    .setContentText(message) 
    .setSmallIcon(icon) 
    .setWhen(when) 
    .build(); 
+0

Onunla çalışacağım ve güncelleyin – Indra

+0

Herhangi bir Luck Indra? – Antman06

+0

Hayır – Indra

1
: Aşağıdaki gibi görünecektir

Notification notification = new Notification(icon, message, when); 

Bu yapıcı Notification.Builder lehine kullanımdan kaldırıldı: Bunun yerine https://developer.android.com/reference/android/app/Notification.Builder.html

Notification noti = new Notification.Builder(mContext) 
    .setContentTitle("New mail from " + sender.toString()) 
    .setContentText(subject) 
    .setSmallIcon(R.drawable.new_mail) 
    .setLargeIcon(aBitmap) 
    .build(); 

Şu anda aşağıdaki var Notification.Builder kullanmak

Özgün soruya gelince, sisteminiz GCMBaseIntentService:

destekliyorsa bu sınıf iyi çalışır
package ...; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

import com.google.android.gcm.GCMBaseIntentService; 

import static com.example.taxiprofessional.CommonUtilities.SENDER_ID; 
import static com.example.taxiprofessional.CommonUtilities.displayMessage; 

public class GCMIntentService extends GCMBaseIntentService { 

    private static final String TAG = "GCMIntentService"; 

public GCMIntentService() { 
    super(SENDER_ID); 
} 

/** 
    * Method called on device registered 
    **/ 
@Override 
protected void onRegistered(Context context, String registrationId) { 
    Log.i(TAG, "Device registered: regId = " + registrationId); 
    displayMessage(context, "Your device registred with GCM"); 
    AccountInformation info=AccountInformation.sharedInstance(); 
    ServerUtilities.register(context, info.email, info.password, registrationId); 
} 

/** 
    * Method called on device un registred 
    * */ 
@Override 
protected void onUnregistered(Context context, String registrationId) { 
    Log.i(TAG, "Device unregistered"); 
    displayMessage(context, getString(R.string.gcm_unregistered)); 
    ServerUtilities.unregister(context, registrationId); 
} 

/** 
    * Method called on Receiving a new message 
    * */ 
@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString("price"); 

    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
    * Method called on receiving a deleted message 
    * */ 
@Override 
protected void onDeletedMessages(Context context, int total) { 
    Log.i(TAG, "Received deleted messages notification"); 
    String message = getString(R.string.gcm_deleted, total); 
    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
    * Method called on Error 
    * */ 
@Override 
public void onError(Context context, String errorId) { 
    Log.i(TAG, "Received error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_error, errorId)); 
} 

@Override 
protected boolean onRecoverableError(Context context, String errorId) { 
    // log message 
    Log.i(TAG, "Received recoverable error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_recoverable_error, 
      errorId)); 
    return super.onRecoverableError(context, errorId); 
} 

/** 
    * Issues a notification to inform the user that server has sent a message. 
    */ 
private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.taxi_profi; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) 
      context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 

    String title = context.getString(R.string.app_name); 

    Intent notificationIntent = new Intent(context, Dashboard.class); 
    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
      Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = 
      PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    // Play default notification sound 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    // Vibrate if vibrate is enabled 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notificationManager.notify(0, notification);  

} 

} 
-1

Ben aşağıdaki öğretici çalıştı: http://javapapers.com/android/google-cloud-messaging-gcm-for-android-and-push-notifications/ ve aslında Kayıt olmak mümkün görünüyor ve siz de görebilirsiniz olarak bildirimlerin gönderilmesi hiç hata veriyor: http://push.taxiprofessional.net/android/testNotification.php

Oysa hiçbir bildirim geldi. Bunu kullanan var mı ve bunu debunk etmeye yardımcı olabilir mi?

+0

Bu eğitimi deneyin ...... http: //www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ –

+0

Sanırım bu Cevap, bir cevap girişi değil, soruya bir yorum olabilirdi, çünkü bir çözüm sunmuyor ama bir soru soruyor. –