Вы можете изменить конфигурацию сборки и добавить перенаправление. См. Перенаправление версий сборки в MSDN.
В основном вы хотите добавить следующий фрагмент в ваш файл app.config
или web.config
:
EDIT
Зачем вам нужно перенаправить версии сборки? Несмотря на то, что SocketIO4Net поддерживает более новые версии Newtonsoft.Json, он был скомпилирован против единственной версии (4.0.8 в вашем случае). Эта версия хранится в DLL и используется для загрузки DLL-файлов. SocketIO4Net зависит от.
Обратите внимание, что зависимости NuGet не совпадают с зависимостями DLL / времени выполнения - зависимость NuGet от Newtonsoft.Json> = 4.0.8 только означает, что вам будет разрешено установить SocektIO4Net в проект с более новой версией Newtonsoft.Json, он не имеет ничего общего с настройками времени исполнения.
Как утверждают, последние версии NuGet должны добавлять сборки, привязки-перенаправления автоматически для вас, если ваш проект имеет файл app.config или web.config.
По вашему мнению DidLoad:
if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults]
objectForKey:@"aValue"]]) {
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"aValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
//Action here
}
Я предполагаю, что под Xcode вы на самом деле имеете в виду iOS.
Что вам нужно сделать, это использовать класс NSUserDefaults
, чтобы сохранить флаг, указывающий, видел ли пользователь экран учебника раньше.
Когда ваше приложение загружается впервые (или в тот момент, когда вы хотите решить, отображать ли экран учебника), сделайте что-то вроде этого:
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenTutorial"])
[self displayTutorial];
Это проверяет сохраненные NSUserDefaults для текущий пользователь для значения с именем "hasSeenTutorial", которое еще не существует. Так как он не существует, он позвонит displayTutorial
. displayTutorial
относится к вашему методу создания учебного представления. Вы можете понять эту часть.
Затем, как только пользователь закроет экран учебника:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenTutorial"];
Это значение будет сохранено для вашего профиля пользователя, то есть при следующей проверке оно будет истинным, поэтому displayTutorial
выиграл не называйся.
Инициализируйте свои пользовательские настройки по умолчанию с помощью BOOL, который называется instructionsSeen
(или как вы хотите), и установите для него значение NO
в методе инициализации вашего делегата приложения. В вашем приложении проверьте это значение, и если оно равно NO
отобразить экран учебника. В качестве части отображения и отображения этого экрана установите instructionsSeen
на YES
и сохраните его по умолчанию.
Таким образом, демонстрационный экран будет отображаться только при первом запуске, если только пользователь не удалит и не установит приложение снова.
Вы также можете показать демонстрацию для небольшого количества запусков (скажем, 3). В этом случае не используйте BOOL
, используйте число и увеличивайте его.
Конечно, если мы хотим рассказать пользователю что-то о функциях после обновления (не только приложение запускается первый раз), может подойти приведенное ниже решение.
В вашем viewDidLoad:
NSString *currentBundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *previousBundleVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"PreviousBundleVersion"];
if (![currentBundleVersion isEqualToString:previousBundleVersion] ) {
// Here you can initialize your introduction view and present it!
}
Как только пользователь закроет вступление:
NSString *currentBundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:currentBundleVersion forKey:@"PreviousBundleVersion"];
[standardUserDefaults synchronize];
}
В этом случае версия пакета приложения, сохраненная в вашем standardUserDefaults, будет отличаться только от текущей версии пакета после обновления и отображается только один раз, а также при первом запуске.
Версия Xamarin.iOS в AppDelegate:
UIStoryboard storyboard = UIStoryboard.FromName("Main", null);
if (NSUserDefaults.StandardUserDefaults.BoolForKey ("hasSeenTutorial") == false) {
UIViewController vc = storyboard.InstantiateViewController ("StartPageViewController");
this.Window.RootViewController = vc;
} else {
UIViewController vc = storyboard.InstantiateViewController ("NonStartPageViewController");
this.Window.RootViewController = vc;
}
this.Window.MakeKeyAndVisible ();
В моем StartPageViewController у меня есть кнопка, которая устанавливает NSUserDefaults в значение true, поэтому при следующем запуске она будет запускаться с NonStartPageViewController:
partial void RegisterButton_TouchUpInside (UIButton sender)
{
NSUserDefaults.StandardUserDefaults.SetBool(true,"hasSeenTutorial");
NSUserDefaults.StandardUserDefaults.Synchronize();
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"]) {
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[self displayTutorial];
}
Swift версия:
if !(NSUserDefaults.standardUserDefaults().boolForKey("seenTutorial")) {
//Tutorial part
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "seenTutorial")
}
Каждый делает это более сложным и смелым, чем нужно ... Простое полное решение.
В ViewDidLoad:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstLoadKey"]) {
self.imageView.hidden = YES;
}else{
self.imageView.hidden = NO;
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"FirstLoadKey"];
[[NSUserDefaults standardUserDefaults]synchronize];
}