如何使用[[UIApplication sharedApplication] openURL:]从前台应用程序打开一个新应用程序

时间:2014-03-28 07:38:23

标签: ios objective-c

我尝试使用此

打开Facebook应用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"fb://"]];

当我的应用程序在前台运行时,它运行正常但如果我的应用程序在后台运行则无法正常工作。

帮助我。

我是编程方面的新手

2 个答案:

答案 0 :(得分:2)

你认为不可能的任务。想想并首先问问你自己在想什么。

  • 您的应用在背景中意味着(最小化)。然后在哪里触发调用开放的Facebook Native app方法。

  • 如果应用在后台,则您无法在iPhone屏幕上处理您的应用事件。

来自应用程序的开放Fb原生应用程序的轰鸣声代码。但是从背景出来的逻辑思考。根本不相关。

您可以使用以下方式打开Facebook应用程序: -

- (IBAction)OpenFB: (id) sender
{
    NSURL* facebookURL = [NSURL URLWithString: @"fb://profile/157893597658332"];
    UIApplication* app = [ UIApplication sharedApplication ];
    if( [ app canOpenURL: facebookAppURL ] ) {
        [ app openURL: facebookAppURL ];
    } else {
       // url wrong
    }
}

这是非常好的文章

http://www.plungeinteractive.com/blog/2012/12/31/open-facebook-and-twitter-native-apps-from-your-ios-appgame/

<强>更新: -

我不认为这适合您的要求,但使用Custom URL Scheme。您可以从safari浏览器或其他应用程序打开您的应用程序。只需设置网址类型 - &gt;设置像波纹管这样的URL方案 enter image description here

然后像我在波纹管图片中那样尝试从浏览器打开你的应用程序: -

enter image description here

答案 1 :(得分:0)

您无法从后台模式启动其他应用,因为这会在没有用户互动的情况下抢占用户的当前任务。只允许一个应用程序抢占用户当前的操作,即拨打来电时的电话。

您可以做的是显示本地通知,如果用户操作启动您的应用的通知 - 将其重新置于前台 - 那么您可以启动Facebook。

UILocalNotification* localNotification = [[UILocalNotificationalloc] init]; 
localNotification.fireDate = nil;
localNotification.alertBody = @"I want to launch Facebook";
localNotification.timeZone = nil;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

然后在你的app委托 -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {
        // Override point for customization after application launch.

        // Handle launching from a notification
        UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
        if (locationNotification) {
            // Open Facebook
            [application openURL:[NSURL URLWithString:@"fb://"];
        }

        return YES;
    }

但如果用户选择不操作您的通知,则无法执行任何操作。