0
我想寫一個跨移動平臺應用程序,通過指定所需的參數(如日期和時間)來設置警報。我只想設置一次而不是重複。 我無法在mvvmcross或Xamarin中找到任何現成的插件?MvvmCross插件用於設置警報
請幫
我想寫一個跨移動平臺應用程序,通過指定所需的參數(如日期和時間)來設置警報。我只想設置一次而不是重複。 我無法在mvvmcross或Xamarin中找到任何現成的插件?MvvmCross插件用於設置警報
請幫
既然有內MVVMCross沒有現成的插件,您可能需要編寫自己的插件。您可以在這裏找到的文檔:
https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins
因爲你想指定幾個參數,你會想看看下面的內容:
https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins#writing-a-configurable-plugin
總體而言,這是什麼你可以這樣做:
通用接口
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>();
}
}
的Android實現
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);
}
}
Setup.cs - 要爲所有Android/IOS /窗口設置在一個核心位置值
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;
}
這樣,你會遵循相同的適用於iOS和Windows Phone的Droid步驟。我希望這有幫助!