Показывать экран при первом запуске только в iOS

Вы можете изменить конфигурацию сборки и добавить перенаправление. См. Перенаправление версий сборки в 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.

29
задан Blazer 27 February 2012 в 01:00
поделиться

8 ответов

По вашему мнению DidLoad:

if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults]
                                objectForKey:@"aValue"]]) {
    [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"aValue"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    //Action here

}
33
ответ дан Arslan Ali 27 February 2012 в 01:00
поделиться

Я предполагаю, что под Xcode вы на самом деле имеете в виду iOS.

Что вам нужно сделать, это использовать класс NSUserDefaults, чтобы сохранить флаг, указывающий, видел ли пользователь экран учебника раньше.

Когда ваше приложение загружается впервые (или в тот момент, когда вы хотите решить, отображать ли экран учебника), сделайте что-то вроде этого:

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenTutorial"])
    [self displayTutorial];

Это проверяет сохраненные NSUserDefaults для текущий пользователь для значения с именем "hasSeenTutorial", которое еще не существует. Так как он не существует, он позвонит displayTutorial. displayTutorial относится к вашему методу создания учебного представления. Вы можете понять эту часть.

Затем, как только пользователь закроет экран учебника:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenTutorial"];

Это значение будет сохранено для вашего профиля пользователя, то есть при следующей проверке оно будет истинным, поэтому displayTutorial выиграл не называйся.

53
ответ дан chroipahtz 27 February 2012 в 01:00
поделиться

Инициализируйте свои пользовательские настройки по умолчанию с помощью BOOL, который называется instructionsSeen (или как вы хотите), и установите для него значение NO в методе инициализации вашего делегата приложения. В вашем приложении проверьте это значение, и если оно равно NO отобразить экран учебника. В качестве части отображения и отображения этого экрана установите instructionsSeen на YES и сохраните его по умолчанию.

Таким образом, демонстрационный экран будет отображаться только при первом запуске, если только пользователь не удалит и не установит приложение снова.

Вы также можете показать демонстрацию для небольшого количества запусков (скажем, 3). В этом случае не используйте BOOL, используйте число и увеличивайте его.

3
ответ дан Abizern 27 February 2012 в 01:00
поделиться

Конечно, если мы хотим рассказать пользователю что-то о функциях после обновления (не только приложение запускается первый раз), может подойти приведенное ниже решение.

В вашем 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, будет отличаться только от текущей версии пакета после обновления и отображается только один раз, а также при первом запуске.

9
ответ дан Dmitry Varavkin 27 February 2012 в 01:00
поделиться

Версия 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();
    }
2
ответ дан pkozlowski 27 February 2012 в 01:00
поделиться
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"]) {
    [defaults setObject:[NSDate date] forKey:@"firstRun"];
    [self displayTutorial];
}
1
ответ дан 27 February 2012 в 01:00
поделиться

Swift версия:

if !(NSUserDefaults.standardUserDefaults().boolForKey("seenTutorial")) {
            //Tutorial part
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "seenTutorial")
        }
0
ответ дан PoolHallJunkie 27 February 2012 в 01:00
поделиться

Каждый делает это более сложным и смелым, чем нужно ... Простое полное решение.

В ViewDidLoad:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstLoadKey"]) {
    self.imageView.hidden = YES;
}else{
    self.imageView.hidden = NO;
    [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"FirstLoadKey"];
    [[NSUserDefaults standardUserDefaults]synchronize];
}
0
ответ дан Jeff 27 February 2012 в 01:00
поделиться