Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 用于设置报警的MvvmCross插件_Xamarin_Mvvmcross - Fatal编程技术网

Xamarin 用于设置报警的MvvmCross插件

Xamarin 用于设置报警的MvvmCross插件,xamarin,mvvmcross,Xamarin,Mvvmcross,我想编写一个跨移动平台的应用程序,通过指定日期和时间等所需参数来设置警报。我只想设置一次,而不是重复。 我在mvvmcross或Xamarin中找不到任何现成的插件 请提供帮助因为MVVMCross中没有现有插件,您可能需要编写自己的插件。您可以在此处找到文档: 由于您希望指定几个参数,因此希望看到以下部分: 总的来说,您可以这样做: 通用界面 public interface IAlarm { void SetupAlarm(); } public class PluginLo

我想编写一个跨移动平台的应用程序,通过指定日期和时间等所需参数来设置警报。我只想设置一次,而不是重复。 我在mvvmcross或Xamarin中找不到任何现成的插件


请提供帮助

因为MVVMCross中没有现有插件,您可能需要编写自己的插件。您可以在此处找到文档:

由于您希望指定几个参数,因此希望看到以下部分:

总的来说,您可以这样做:

通用界面

public interface IAlarm
{
    void SetupAlarm(); 
}

public class PluginLoader
    : IMvxPluginLoader
{
    public static readonly PluginLoader Instance = new PluginLoader();

    public void EnsureLoaded()
    {
        var manager = Mvx.Resolve<IMvxPluginManager>();
        manager.EnsurePlatformAdaptionLoaded<PluginLoader>();
    }
}
然后,对于iOS和Windows Phone,您将遵循相同的Droid步骤。我希望这有帮助

public class DroidAlarmConfiguration 
    : IMvxPluginConfiguration
{
    public AlarmLength { get; set;}
}

public class DroidAlarm : IAlarm
{
    public TimeSpan AlarmLength { get; set; }

    public void SetupAlarm()
    {
        //ALARM IMPLEMENTATION HERE. NOTE THIS IS SOME JAVA SYNTAX!!!!
        var globals = Mvx.Resolve<Cirrious.CrossCore.Droid.IMvxAndroidGlobals>();
        var alarm = globals.ApplicationContext
                              .GetSystemService(Context.ALARM_SERVICE)
                              as AlarmManager;

        Intent intent = new Intent(context, AlarmReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

        alarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
        alarmLength, alarmIntent);
    }
}

public class Plugin
    : IMvxPlugin
{
private _alarmLength = **Your Value Here**;

public void Configure(IMvxPluginConfiguration configuration)
{
    if (configuration == null)
        return;

    var droidConfiguration = (DroidAlarmConfiguration)configuration;
    _alarmLength = droidConfiguration.AlarmLength;
}

public void Load()
{
      var instance = new DroidAlarm();
      instance.AlarmLength = _AlarmLength;
    Mvx.RegisterSingleton<IAlarm>(instance);
}
}  
protected override IMvxPluginConfiguration GetPluginConfiguration(Type plugin)
{
    if (plugin == typeof(Yours.Alarm.Droid.Plugin))
    {
        return new Yours.Alarm.Droid.DroidAlarmConfiguration()
        {
            AlarmLength = **YOUR VALUE HERE**
        };
    }

    return null;
}