【问题标题】:iOS handleOpenURL isn't called when becoming active??? iOS 5.1 (this is not a 3.2 issue)激活时不调用iOS handleOpenURL??? iOS 5.1(这不是 3.2 的问题)
【发布时间】:2012-04-04 14:28:48
【问题描述】:

我使用 URL 方案打开我的应用程序并从 -didFinishLaunchingWithOptions: 中的 URL 解析查询字符串。这很好用,但是当应用程序处于活动状态时它不会解析新字符串。我已经实现了-handleOpenURL: 和 openURL 方法如下,但是当应用程序激活时似乎都没有被调用...

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    if (!url) 
        return NO;

    queryStrings = [self parseQueryString:[url query]];
    return YES;
}

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if (!url) 
        return NO;
    queryStrings = [self parseQueryString:[url query]];
    return YES;
}

请帮忙!谢谢!

【问题讨论】:

    标签: ios url url-scheme


    【解决方案1】:

    用途:

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

    您使用的方法已弃用。

    【讨论】:

    • @HackyStack 尽管方法没有被调用,文件是否被复制?
    • @HackyStack 当您从应用程序(例如 iBooks)打开文件时,iOS 会将文件复制到 iBooks 的 Documents 文件夹,然后打开 iBooks 并调用它的 application:openURL: 方法。在这里,URL 将是文件的 fileURL,已经在应用程序的 Documents 文件夹中。文件是否已复制到您的 Documents 文件夹中?
    • 我的应用程序是从网页启动的,并传递了一个查询字符串。然后用户被发送回网页,并可能使用不同的查询字符串再次启动我的应用程序,但是当他们这样做时,新字符串不会显示。我意识到虽然正在调用 openURL。问题是当应用程序再次激活时,我的 viewController 中没有调用 viewWillAppear(这是我使用查询字符串填充 ivars 的地方)。这是一个基于视图的应用程序模板,我真的不知道如何从我的应用程序委托访问我的视图控制器......是的,我是一个 iOS 菜鸟......
    • 啊哈,问题解决了!它确实调用了 openURL。所以我建议你关闭这个问题。但是
    • 如果你愿意,我们可以聊聊 viewWillAppear 的事情。
    【解决方案2】:

    handleOpenURL 在 iOS 5 上已弃用:您应该改用 application:openURL:sourceApplication:annotation: - 您的应用程序中是否也有 application:openURL 方法?如果没有,添加一个,看看它是否被拾取。

    【讨论】:

    • 我也实现了 openURL。我已经单独尝试过每个,目前都实现了,当应用程序从后台变为活动状态时,都没有被调用。仅适用于启动...
    • 是的,它仅在启动应用程序时起作用...但不是来自 urlschema...anyhelp?
    【解决方案3】:

    澄清上述接受的答案。您可能想使用它(我被接受的答案弄糊涂了,因为它只包含您需要的功能,而不是您需要在函数中包含的功能):

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]];
    
    }
    
    - (void)applicationDidBecomeActive:(UIApplication *)application {
    
        [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]];
    }
    

    我个人是通过 Ray Wenderlich 教程来解决这个问题的。还有一些很好的使用 Parse 的教程展示了如何将两者结合起来。

    可以在这里找到完整的教程:https://parse.com/tutorials/integrating-facebook-in-ios

    希望这有助于减少对这个问题的困惑 :)

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多