「Xamarin.Androidで通知を表示しアプリを起動する」の版間の差分
ナビゲーションに移動
検索に移動
(→関連項目) |
|||
60行目: | 60行目: | ||
== 関連項目 == | == 関連項目 == | ||
+ | * [[Xamarin.Androidで通知を表示する]] | ||
* [[Xamarin.AndroidでFirebase Cloud Messagingを使う]] | * [[Xamarin.AndroidでFirebase Cloud Messagingを使う]] | ||
[[category: Xamarin.Android]] | [[category: Xamarin.Android]] |
2019年1月25日 (金) 07:18時点における最新版
Xamarin.Androidで、通知を表示し、通知欄がタップされたらアプリを起動したい。
いわゆる「〇〇さんからメッセージが届きました」と表示されタップするとメッセンジャーが起動するアレを実装したい。
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Content;// Intent
using Android.Support.V4.App; // Notification
[Activity(Label = "NofiticationExample", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.myButton);
button.Click += (s, e) => Notification();
}
void Notification()
{
var context = this;
var manager = (NotificationManager)context.GetSystemService(Context.NotificationService);
// アクティビティを起動するインテント
// Flagsなどは用途に応じて適宜書き換える。
var intent = context.PackageManager
.GetLaunchIntentForPackage(context.PackageName)
.AddFlags(ActivityFlags.ClearTop);
// PendingIntentを噛ますことで、インテントを直ちに発行するのではなく、
// 通知欄をタップされたタイミングで発行する
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.UpdateCurrent);
// 通知を生成
var message = "Hello, World!";
var builder = new NotificationCompat.Builder(context)
.SetSmallIcon(Android.Resource.Drawable.StarBigOn)
.SetContentTitle("Boop!")
.SetStyle(new NotificationCompat.BigTextStyle().BigText(message))
.SetContentText(message)
.SetContentIntent(pendingIntent);
// 通知を発射
manager.Notify(1, builder.Build());
}
}