作ろうとしていたもの
「チュートリアル: Azure Notification Hubs を使用して Xamarin.Android アプリにプッシュ通知を送信する」
↑のチュートリアルでできるアプリケーションにタグを追加登録する機能をつけようとしています。
androidアプリでタグの名前を入力し、ボタンを押すことによって入力したタグがnotificationhubに登録され、notificationhubからそのタグを指定して通知を送ると、そのタグを登録したandroidが通知を受け取るというのを考えています。
問題
ですが、ボタンを押したときにNotificationHub型変数を新しく宣言する部分で
Java.Lang.NullPointerException: <Timeout exceeded getting exception details>
というエラーが発生してしまいます。
コード
MainActivity.csは以下のように書き換えました。
C#
1public class MainActivity : Activity 2 { 3 4 public const string TAG = "MainActivity"; 5 6 RegistrationNewTag registration = new RegistrationNewTag(); 7 8 protected override void OnCreate(Bundle savedInstanceState) 9 { 10 base.OnCreate(savedInstanceState); 11 12 SetContentView(Resource.Layout.Main); 13 14 if (Intent.Extras != null) 15 { 16 foreach (var key in Intent.Extras.KeySet()) 17 { 18 if (key != null) 19 { 20 var value = Intent.Extras.GetString(key); 21 Log.Debug(TAG, "Key: {0} Value: {1}", key, value); 22 } 23 } 24 } 25 26 Button tagbutton = FindViewById<Button>(Resource.Id.registbutton); 27 //ボタンが押されたときの処理 28 tagbutton.Click += delegate { 29 30 EditText tagname = FindViewById<EditText>(Resource.Id.tagname); 31 32 registration.tagName = tagname.Text; 33 34 registration.Execute(); 35 36 }; 37 } 38 }
非同期処理を行うためのクラス RegistrationNewTag.cs を追加しました。
C#
1 class RegistrationNewTag : AsyncTask 2 { 3 4 public string tagName; 5 6 FirebaseInstanceIdService firebaseInstance = new FirebaseInstanceIdService(); 7 8 protected override Java.Lang.Object DoInBackground(params Java.Lang.Object[] @params) 9 { 10 //この部分でエラーが発生 11 NotificationHub connectionAzure = new NotificationHub(Constants.NotificationHubName, Constants.ListenConnectionString, firebaseInstance); 12 13 var tags = new List<string> { tagName }; 14 15 connectionAzure.Register(FirebaseInstanceId.Instance.Id, tags.ToArray()); 16 17 throw null; 18 } 19 20 21 }
Constants.cs, FirebaseMassegingService.cs, MyFirebaseIIDService.csは上記リンク内のものと同じです。Constants内のListenConnectionStringとNotiticationHubNameはチュートリアルどおりNotificationHubのAccess Policiesから持ってきたものを使用しています。
どうやったらアプリケーションを端末にインストールするときと同じようにNotificationHubを宣言できるかわかる方はいらっしゃいませんか?
あなたの回答
tips
プレビュー