IPhone एप्लिकेशन को प्रोग्रामेटिक रूप से पुनरारंभ करने के लिए




objective-c ios4 (5)

जब मैं लॉगआउट बटन दबाया जाता हूं, तो मैं अपने iPhone ऐप को प्रोग्रामेटिक रूप से पुनरारंभ करने की कोशिश कर रहा हूं।

क्या किसी को साझा करने के लिए एक कोड नमूना मिला है? मैंने पढ़ा है कि यह main.m फाइल को संशोधित करके संभव है, लेकिन इससे संबंधित कोई कोड नहीं मिल सका है।

किसी भी सहायता की सराहना की जाएगी।


इसे एक UIAlertAction में रखें जिससे उपयोगकर्ता "सेव एंड क्विट" पूछ सके। यह बाहर निकलने (0) को चेतन करेगा ताकि कम से कम यह योजनाबद्ध दिखे।

- (void)saveAndQuit
{
    [UIView animateWithDuration:0.8 animations:^{
        self.window.alpha = 0.0; // fade out...
        // ... while pinching to a point
        self.window.transform = CGAffineTransformScale(
                CGAffineTransformMakeTranslation( 0, 0 ), 0.1, 0.1 );
    } completion:^(BOOL finished) {
        exit(0);
    }];
}

उद्देश्य सी:

exit(0);

स्विफ्ट:

exit(0)

मेरे पास 2 लाइव ऐप्स हैं और उन्हें अस्वीकार नहीं किया गया है। मेरे एप्लिकेशन में से एक में मेरे ऐप के मुख पृष्ठ में एक सुविधा के रूप में कोड की यह पंक्ति भी है। इसके शीर्ष दाएं कोने पर स्थित है, जहां ट्विटर पर ट्वीट बटन है। तो एप्पल के बारे में चिंता न करें जब तक कि यह एक अप्रत्याशित दुर्घटना की तरह न दिखे।


यह कोशिश करो, यह मेरे लिए काम करता है।

-(void)restart
{
    MyAppDelegate *appDelegate = (MyAppDelegate *)([UIApplication sharedApplication].delegate);
    [appDelegate.navigationController popToRootViewControllerAnimated:NO];
    UIViewController *topViewController = appDelegate.navigationController.topViewController;
    Class class = [topViewController class];
    NSString *nibName = topViewController.nibName;
    UIViewController *rootViewcontroller = (UIViewController *)([[class alloc] initWithNibName:nibName bundle:nil]);
    [appDelegate.navigationController.view removeFromSuperview];
    appDelegate.navigationController.viewControllers = [NSArray arrayWithObject:rootViewcontroller];
    [appDelegate.window addSubview:appDelegate.navigationController.view];
    [appDelegate.window makeKeyAndVisible];
}

यहाँ आप निजी एपीआई का उपयोग कर सिम्युलेटर पर यह कैसे कर सकते हैं:

    NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@", scheme, endpointString]];

    Class pClass = NSClassFromString(@"BKSSystemService");
    id service = [[pClass alloc] init];

    SEL pSelector = NSSelectorFromString(@"openURL:application:options:clientPort:withResult:");
    NSMethodSignature *signature = [service methodSignatureForSelector:pSelector];
    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
    invocation.target = service;
    NSString *app = @"com.apple.mobilesafari";
    [invocation setSelector:pSelector];
    [invocation setArgument:&URL atIndex:2];
    [invocation setArgument:&app atIndex:3];
    unsigned int i = [service performSelector:NSSelectorFromString(@"createClientPort")];
    [invocation setArgument:&i atIndex:5];
    [invocation invoke];
    exit(0);

यह उचित अधिकारों के साथ जेलब्रेक ऐप्स पर भी काम करना चाहिए।

अन्य ऐप्स के लिए सरल HTML पेज का उपयोग किया जा सकता है:

    NSString *format = @"https://dl.dropboxusercontent.com/s/rawt1ov4nbqh4yd/launchApp.html?scheme=%@&URL=%@";
    NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:format, scheme, endpointString]];
    [[UIApplication sharedApplication] openURL:URL];
    exit(0);

दुर्भाग्य से, इस मामले में इंटरनेट कनेक्शन की आवश्यकता है।


सबसे पहले, हालांकि आपके ऐप को मारना संभव है, यह ऐप्पल द्वारा अनुमति नहीं है और अस्वीकार कर दिया जाएगा। यहां तक ​​कि अगर इसे अस्वीकार नहीं किया गया था, तो आपके ऐप को मारने के बाद इसे फिर से शुरू करने का कोई तरीका नहीं है। आपको बस अपने कोड के माध्यम से अपने ऐप को रीसेट करने का कोई तरीका खोजने की आवश्यकता है, जैसा कि Jason Coco ने कहा था। यह अधिक काम हो सकता है, लेकिन Apple द्वारा अस्वीकार नहीं किया जाना इसके लायक है।







application-restart