'Activity1.OnNewIntent (Content.Intent)': не найдено подходящего метода для переопределения - PullRequest
0 голосов
/ 14 ноября 2018

Я реализовал push-уведомления App Center в своем проекте Android MonoGame, и все, кажется, работает, потому что я получаю уведомления на моем устройстве Android, которые я отправил из своей учетной записи App Center.Но в этом руководстве они упоминают, что вы должны добавить этот код в ваш класс Acitivity, если ваш LaunchMode имеет значение SingleInstance, но код не работает.Я получаю два сообщения об ошибке.

Учебное пособие: см. Перехват push-уведомлений, Дополнительные настройки

Действительно ли этот код необходим, если у вас есть проект Android без заставки?Будет ли иметь значение, если я добавлю заставку в свой проект?

Что делает этот код и как я могу использовать его в проекте MonoGame Android, если это будет необходимо?

     protected override void OnNewIntent(Android.Content.Intent intent)
     {
         base.OnNewIntent(intent);
         Push.CheckLaunchedFromNotification(this, intent);
     }

Тип или имя пространства имен 'Content' не существует в пространстве имен (отсутствует ссылка на сборку?)

'Activity1.OnNewIntent (Content.Intent)': не найдено подходящего метода для переопределения(CS0115)

    using Android.App;
    using Android.Content.PM;
    using Android.OS;
    using Android.Views;
    using Microsoft.AppCenter;
    using Microsoft.AppCenter.Analytics;
    using Microsoft.AppCenter.Crashes;
    using Microsoft.AppCenter.Push;

    namespace Newapp.Android
    {
        [Activity(Label = "Newapp.Android"
            , MainLauncher = true
            , Icon = "@drawable/icon"
            , Theme = "@style/Theme.Splash"
            , AlwaysRetainTaskState = true
            , LaunchMode = LaunchMode.SingleInstance
            , ScreenOrientation = ScreenOrientation.FullUser
            , ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize)]
        public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
        {
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                if (!AppCenter.Configured)
                {
                    Push.PushNotificationReceived += (sender, e) =>
                    {
                        // Add the notification message and title to the message
                        var summary = $"Push notification received:" +
                                            $"\n\tNotification title: {e.Title}" +
                                            $"\n\tMessage: {e.Message}";

                        // If there is custom data associated with the notification,
                        // print the entries
                        if (e.CustomData != null)
                        {
                            summary += "\n\tCustom data:\n";
                            foreach (var key in e.CustomData.Keys)
                            {
                                summary += $"\t\t{key} : {e.CustomData[key]}\n";
                            }
                        }

                        // Send the notification summary to debug output
                        System.Diagnostics.Debug.WriteLine(summary);
                    };
                }

                AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Push));

                var g = new Game1();
                SetContentView((View)g.Services.GetService(typeof(View)));
                g.Run();
            }

         protected override void OnNewIntent(Android.Content.Intent intent)
         {
             base.OnNewIntent(intent);
             Push.CheckLaunchedFromNotification(this, intent);
         }
        }
    }

1 Ответ

0 голосов
/ 15 ноября 2018

Вы видите ошибку компилятора, потому что пространство имен в вашем проекте заканчивается на Android, поэтому он пытается найти NewApp.Android.Content.Intent, а не Android.Content.Intent. Вы можете исправить ошибку, изменив ваше пространство имен, чтобы оно не заканчивалось на Android, или вы можете использовать global:: при обращении к глобальному пространству имен Android:

protected override void OnNewIntent(global::Android.Content.Intent intent)
{
    base.OnNewIntent(intent);
    Push.CheckLaunchedFromNotification(this, intent);
}
...