2017-02-17 23 views
0

Xamarinフォーム用のDependencyServiceを使用してローカルプッシュ通知を実装しようとしています。 ここインターフェース:Xamarinフォームによるローカルプッシュ通知

public interface INotification 
    { 
     void SetNotification(DateTime notificationDate, TimeSpan notificationTime); 
    } 

そして、ここでは、のAndriodの実装です:

[assembly:Dependency(typeof(NotificationService))] 
namespace TestMVVM.Droid 
{ 
    public class NotificationService : INotification 
    { 
     public void SetNotification(DateTime notificationDate, TimeSpan notificationTime) 
     { 
      Notification.Builder builder = new Notification.Builder(this) 
       .SetContentTitle("Test Notification") 
       .SetContentText("Notification from Xamarin Forms"); 
     } 
    } 
} 

それはようNotification.Builder builder = new Notification.Builder(this)上のエラーを示している。

は 'TestMVVM.Droid.NotificationService' から変換できません〜 'Andriod.Content.Context'

私はこの問題を理解しています。 Contextは、アプリケーション固有のリソースやクラスへのアクセス、起動アクティビティ、ブロードキャストと受信インテントなどのアプリケーションレベルの操作のアップコールを許可します(https://developer.xamarin.com/api/type/Android.Content.Context/#Remarks参照)。抽象クラスなので、オブジェクトを作成してコンストラクタBuilderに渡すことはできません。 Builderコンストラクタにコンテキストを渡すにはどうすればよいですか?

編集:ありがとうございました。動作していますが、通知音だけが表示されているわけではありません。ここでのコード:助けを

Notification.Builder builder = new Notification.Builder(Xamarin.Forms.Forms.Context) 
       .SetContentTitle("Test Notification") 
       .SetContentText("Notification from Xamarin Forms") 
       .SetDefaults(NotificationDefaults.Sound) 
       .SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis()); 

      Notification notification = builder.Build(); 
      NotificationManager notificationManager = 
             Forms.Context.GetSystemService(Context.NotificationService) as NotificationManager; 
      const int notificationId = 0; 
      notificationManager.Notify(notificationId, notification); 

答えて

3

使用Xamarin.Forms.Forms.Context

[assembly:Dependency(typeof(NotificationService))] 
namespace TestMVVM.Droid 
{ 
    public class NotificationService : INotification 
    { 
     public void SetNotification(DateTime notificationDate, TimeSpan notificationTime) 
     { 
      Notification.Builder builder = new Notification.Builder (Xamarin.Forms.Forms.Context) 
       .SetContentTitle ("Test Notification") 
       .SetSmallIcon(Android.Resource.Drawable.AlertDarkFrame) 
       .SetWhen (Java.Lang.JavaSystem.CurrentTimeMillis()) 
       .SetDefaults (NotificationDefaults.Sound) 
       .SetContentText ("Notification from Xamarin Forms"); 
     } 
    } 
} 
+0

感謝。できます。しかし私は別の問題にぶつかってきました。通知が表示されていない、サウンドだけが動作しています。私は質問を編集しました。どうぞお気軽に – Vivek

+0

元の質問を修正してください。新しいスレッドを作成したほうがいいですが、すでにここにあります。アイコンを設定していないため、通知が表示されません。あなたがそれをテストできるように何かを設定してください。 '.SetSmallIcon(Android.Resource.Drawable.AlertDarkFrame)'を使う – apineda

関連する問題