TodayWidget openURL触发多次应用程序:openURL

时间:2014-09-12 14:50:25

标签: ios cocoa-touch ios8 google-tag-manager

我用Tableview写了一个简单的今天扩展。 在didSelectRowAtIndexPath:我打开我的应用程序:

[self.extensionContext openURL:url completionHandler:nil];

这在大多数情况下效果很好。 但有时(主要是当应用程序没有在后台运行时)应用程序崩溃。 网址方案对我的应用来说并不陌生,到目前为止一直运作良好。

我发现在这些情况下,application:openURL:sourceApplication:annotation:applicationDidBecomeActive:会被多次触发。

有人有同样的问题,或者可以观察到同样的行为吗?

1 个答案:

答案 0 :(得分:2)

我已经重现了这一点,结果却是iOS 8和Google跟踪代码管理器的问题。

通过技术支持事件与Apple工程师一起完成了这项工作,最新信息是当您的应用程序终止,然后从窗口小部件打开并且Google跟踪代码管理器通过调用其方法初始化时出现问题:

self.container = [future get];

在Google' getting started'页面,他们建议将此代码放入您的application:didFinishLaunchingWithOptions方法。

但是,将代码放在这里显然会旋转UIKit运行循环,这意味着在AppDelegate中,您将看到这两种方法连续两次被调用:

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

- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url

如果应用程序是背景而不是终止,则不会出现此行为。

这仍然是TBC,这是iOS 8或Google跟踪代码管理器中的错误,但同时,建议您从AppDelegate中删除GTM初始化代码并在应用中的其他位置执行此操作代替。