标签: background-fetch

使用Xcode进行模拟时,PerformFetchWithCompletionHandler调用两次

在Xcode 7.0.1中,"模拟背景"获取命令导致performFetchWithCompletionHandler两次触发.

这是一个Xcode调试错误,还是在运行应用程序发布版本的设备上发生这种情况.

立即更新我们有Xcode 7.1.1,仍然performFetchWithCompletionHandler被调用两次.由于我不确定这是否也"在野外"发生,如果我的提取动作已经在运行,我将保持状态.

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler {
    if (self.performingFetch) {
        return completionHandler(UIBackgroundFetchResultNoData);
    }
    self.performingFetch = YES;
    ...
    self.performingFetch = NO;
}
Run Code Online (Sandbox Code Playgroud)

xcode objective-c ios swift background-fetch

46
推荐指数
1
解决办法
2127
查看次数

如何解决iOS后台应用程序取消无法解决?

我想让iOS后台应用程序获取在我的应用程序中工作.在Xcode中进行测试时,它可以正常运行,但在设备上运行却没有!

  • 我的测试设备运行的是iOS 9.3.5(我的部署目标是7.1)
  • 我在Xcode中的目标"Capabilities"下的"Background modes"下启用了"Background fetch"

在此输入图像描述

在应用程序中:didFinishLaunchingWithOptions我用setMinimumBackgroundFetchInterval尝试了各种间隔,包括UIApplicationBackgroundFetchIntervalMinimum

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

    // tell the system we want background fetch
    //[application setMinimumBackgroundFetchInterval:3600]; // 60 minutes
    [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
    //[application setMinimumBackgroundFetchInterval:1800]; // 30 minutes

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我已经实现了application:performFetchWithCompletionHandler

void (^fetchCompletionHandler)(UIBackgroundFetchResult);
NSDate *fetchStart;

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
    fetchCompletionHandler = completionHandler;

    fetchStart = [NSDate date];

    [[NSUserDefaults standardUserDefaults] setObject:fetchStart forKey:kLastCheckedContentDate];
    [[NSUserDefaults standardUserDefaults] synchronize];

    [FeedParser parseFeedAtUrl:url withDelegate:self];
}

 -(void)onParserFinished
{
    DDLogVerbose(@"AppDelegate/onParserFinished");

    UIBackgroundFetchResult result = UIBackgroundFetchResultNoData;

    NSDate *fetchEnd = [NSDate date];
    NSTimeInterval timeElapsed = [fetchEnd …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c ios background-fetch

30
推荐指数
2
解决办法
9919
查看次数

特定时间的后台抓取

我正在寻找解决方案以在后台模式下获取数据,即使应用已终止。有很多关于此问题的教程和答案,但是我的问题与其他问题不同。我在stackoverflow上找不到任何适当的解决方案,因此发布了此问题。

我有可以解释的情况。我正在使用存储事件日期,名称,时间,地址等的领域数据库。现在的事情是,我想编写一个在后台执行的代码,在此代码中,我想获取所有事件数据并比较它们的日期今天的日期。并且根据这几天之间的剩余天数触发本地通知,以提醒用户特定事件还剩下多少天。

我想每天在当地时间上午8点精确地调用此后台获取方法。

由于与背景获取和实现相混淆,我没有编写任何代码。有人知道如何实现吗?

帮助将不胜感激。

ios swift background-fetch xcode9.2

15
推荐指数
1
解决办法
718
查看次数

iOS后台传输 - com.apple.nsurlsessiond文件夹中包含tmp文件

我们编写了一个媒体应用程序,允许您使用BACKGROUND FETCH获取最新视频列表作为json列表

然后它使用BACKGROUND TRANSFER告诉iOS逐个下载视频并返回睡眠状态并在应用完成后唤醒应用程序.

它完成了所有这些,但我们注意到空间使用正在增长和增长.

我们添加了代码来清除所有下载的视频,但空间使用情况在设置中保持高

我们使用Xcode> Organizer> Devices下载了app文件夹,发现BACKGROUND TRANSFER tmp文件夹对tmp文件很无聊.

这些不应该被清除掉

这通常是我使用的代码.我认为主要是我将多个DownloadTask(最多30个)附加到一个后台会话.文件大小从电影到pdf不等.

NSURLSession * backgroundSession_ = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];


backgroundSession_ = [NSURLSession sessionWithConfiguration:urlSessionConfigurationBACKGROUND_
                                                   delegate:self
                                              delegateQueue:[NSOperationQueue mainQueue]];

NSOperationQueue *mainQueue_ = [NSOperationQueue mainQueue];



NSURLSessionDownloadTask * downloadTask_ = [backgroundSession_ downloadTaskWithURL:url_];

downloadStarted_ = TRUE;
[downloadTask_ resume];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ios background-fetch

13
推荐指数
1
解决办法
1317
查看次数

钥匙串有时会返回空值

我们使用本机密钥链包装类来存储和检索密钥链中的值.但在某些情况下,该值将被删除/清空.

我们在我们的应用中启用了以下项目

  1. 位置服务ON - 始终处于初始状态,用户可以在设备设置中更改该状态
  2. 后台提取 - 打开 - 我们在代码中没有使用任何特定方法.(即performfetchwithcompletionhandler代码中未使用/添加的方法)

上述方案是否可能对钥匙串项目产生影响,或者是否存在可能导致钥匙串项目被删除的其他方案.

objective-c cllocationmanager ios keychainitemwrapper background-fetch

13
推荐指数
1
解决办法
974
查看次数

两个方法的completionHandler performFetchWitchCompletionHandler和didReceiveRemoteNotification相互干扰?

自2017年11月起,我有一个iOS(swift)应用程序可用AppStore.我添加了Firebase Analytics和Crashlytics,以主动查看在开发和测试期间未发生的问题.

我目前正在努力使用以下Stacktrace,我在Firebase Crashlytics Dashboard中多次使用:

来自Firebase的Stacktrace

致命异常:NSInternalInconsistencyException此请求已被绝育 - 您不能调用-sendResponse:两次,也不能在编码后

Fatal Exception: NSInternalInconsistencyException
0  CoreFoundation                 0x1ac20bef8 __exceptionPreprocess
1  libobjc.A.dylib                0x1ab3d9a40 objc_exception_throw
2  CoreFoundation                 0x1ac12006c +[_CFXNotificationTokenRegistration keyCallbacks]
3  Foundation                     0x1acc0c3e0 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4  BaseBoard                      0x1aea6cd68 __40-[BSAction sendResponse:withCompletion:]_block_invoke
5  libdispatch.dylib              0x1abc44484 _dispatch_client_callout
6  libdispatch.dylib              0x1abc24754 _dispatch_lane_barrier_sync_invoke_and_complete
7  BaseBoard                      0x1aea20c60 -[BSAction sendResponse:withCompletion:]
8  UIKitCore                      0x1d8c20698 -[UIHandleRemoteNotificationAction sendResponse:]
9  UIKitCore                      0x1d9054d3c __91-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:]_block_invoke_3.2891
10 libdispatch.dylib              0x1abc436c8 _dispatch_call_block_and_release
11 libdispatch.dylib              0x1abc44484 _dispatch_client_callout
12 libdispatch.dylib              0x1abc23b44 _dispatch_main_queue_callback_4CF$VARIANT$armv81
13 CoreFoundation                 0x1ac19a1bc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
14 CoreFoundation                 0x1ac195084 __CFRunLoopRun
15 CoreFoundation …
Run Code Online (Sandbox Code Playgroud)

ios completionhandler swift background-fetch

13
推荐指数
1
解决办法
1963
查看次数

Dart 错误:Dart_LookupLibrary:未找到库“package:background_fetch/background_fetch.dart”

我怎么解决这个问题:

\n
E/flutter (18287): [ERROR:flutter/shell/common/shell.cc(89)] Dart Error: Dart_LookupLibrary: library 'package:background_fetch/background_fetch.dart' not found.\nE/flutter (18287): [ERROR:flutter/runtime/dart_isolate.cc(668)] Could not resolve main entrypoint function.\nE/flutter (18287): [ERROR:flutter/runtime/dart_isolate.cc(168)] Could not run the run main Dart entrypoint.\nE/flutter (18287): [ERROR:flutter/runtime/runtime_controller.cc(389)] Could not create root isolate.\nE/flutter (18287): [ERROR:flutter/shell/common/shell.cc(605)] Could not launch engine with configuration.\n
Run Code Online (Sandbox Code Playgroud)\n

问题就出在模式发布上下出现,但在调试模式下插件工作正常。

\n

更多细节:

\n
[\xe2\x9c\x93] Flutter (Channel master, 3.4.0-36.0.pre.8, on Ubuntu 22.04.1 LTS 5.15.0-48-generic, locale en_US.UTF-8) Checking Android licenses is taking an unexpectedly long time...[\xe2\x9c\x93] Android toolchain - develop for Android devices …
Run Code Online (Sandbox Code Playgroud)

dart dart-isolates background-fetch flutter

13
推荐指数
1
解决办法
3664
查看次数

电话呼叫期间未呼叫远程通知回叫

我创建了一个应用程序,其中在接收推送通知时写入后台获取代码.我在.plist中启用了后台模式,在推送通知有效负载中将content-available键设置为1,注册了推送通知并使用了委托

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler  
Run Code Online (Sandbox Code Playgroud)

现在,当我的应用程序处于后台时,我会收到一个电话.在通话期间,我收到了应用的推送通知.
在呼叫期间接收推送通知时,不会调用推送通知委托.

apple-push-notifications ios background-fetch

12
推荐指数
1
解决办法
326
查看次数

iOS10后台获取

我试图实现后台提取,希望可以不时唤醒应用程序.

我做了这些:

      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
        return true
      }

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    debugPrint("performFetchWithCompletionHandler")
    getData()
    completionHandler(UIBackgroundFetchResult.newData)
  }

  func getData(){
    debugPrint("getData")
  }
Run Code Online (Sandbox Code Playgroud)

我已经启用了后台提取功能.这就是我所做的一切.然后我运行应用程序.即使一小时后(手机睡了),这个功能也从未打过电话.

还有什么其他的事情可以让函数被调用?

ios swift background-fetch

12
推荐指数
2
解决办法
9468
查看次数

杀死应用后,后台获取功能无效

我正在尝试通过后台获取从url获取数据.我的func尝试获取数据,如果有新数据,它会发送本地通知.当我最小化应用程序时,后台提取工作大约10 - 20分钟后工作.但是,当我杀了应用程序(双击主页按钮并关闭应用程序)它不起作用.我等了大约1个小时但是没用.我在android中使用后台服务,它正在成功运行.有没有办法从网址获取数据并在应用关闭时发送本地通知?我正在使用Xcode 6和swift 1.2

background-process ios swift background-fetch

11
推荐指数
1
解决办法
9809
查看次数