iOS Question Is Background Fetch still available?

aminoacid

Active Member
Licensed User
Longtime User
I have been experimenting with Background Fetch as per the instructions here (2015 Tutorial by Erel) and have been unable to get it to work at all:


Since it is an old post, I have searched the forum for any updates on this but have been able to find any. The only thing I found was a later post that perhaps went unnoticed, which provided the following link to Apple Developer that indicates that "setMinimumBackgroundFetchInterval" has been deprecated for IOS 7-13 and says - For apps supporting iOS 13 and higher use BGAppRefreshTask.


Does anyone know of any examples that use this to achieve the same results?

BTW... my test program mentioned above that does not work is pretty much an exact duplicate of Erel's in the Tutorial mentioned above. I just added a counter to count the number of times the Application_FetchDownload() sub is accessed and a button to display the count to check the value. I have the program running on my phone for two days and the counter has not incremented.



Test Program:
#Region  Project Attributes
   #ApplicationLabel: Background Fetch
   #Version: 1.0.0
   #iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight
   #iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
   #PlistExtra: <key>UIBackgroundModes</key><array><string>fetch</string></array>
#End Region

Sub Process_Globals
   Public App As Application
   Public NavControl As NavigationController
   Private Page1 As Page
   ' For testing:
   Private cnt as int
   Private btnRefresh As B4XView
   Public TextView1 As TextView
End Sub

Private Sub Application_Start (Nav As NavigationController)
   NavControl = Nav
   Page1.Initialize("Page1")
   Page1.Title = "Page 1"
   Page1.RootPanel.Color = Colors.White
   NavControl.ShowPage(Page1)
   Dim no As NativeObject = App
   no.RunMethod("setMinimumBackgroundFetchInterval:", Array(0))
End Sub

Private Sub Application_FetchDownload
   Log("FetchDownload")
   Dim ln As Notification
   ln.Initialize(DateTime.Now)
   ln.AlertBody = "Fetch download..."
   ln.PlaySound = True
   ln.Register

    cnt = cnt+1            'see how many times this sub is accessed'
   
   Dim no As NativeObject = App
   no = no.GetField("delegate")
   no.RunMethod("completeFetch:", Array(0))
End Sub

Private Sub btnRefresh_Click
    TextView1.Text = ctr
End Sub
 

aminoacid

Active Member
Licensed User
Longtime User
Background fetch should still work. You need to store the counter value in a file and load it each time that the app starts.

Yes, it does work. Sorry I forgot to update this thread. Since I posted this, I received 22 notifications (the counter does increment) over a period of 5 days. But at random times. Can't make any sense of the interval. I will take your suggestion and log the counter to a file with a time stamp - maybe that will provide a clue. Thanks!
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…