Controls the visibility of the network activity indicator on iOS using Alamofire.

Overview

AlamofireNetworkActivityIndicator

Build Status CocoaPods Compatible Carthage Compatible Platform Twitter

Controls the visibility of the network activity indicator on iOS using Alamofire.

Features

  • Automatic Management of Activity Indicator Visibility
  • Delay Timers to Mitigate Flicker
  • Can Support URLSession Instances Not Managed by Alamofire
  • Comprehensive Test Coverage
  • Complete Documentation

Requirements

  • iOS 10.0+
  • Xcode 11+
  • Swift 5.1+

Dependencies

Communication

  • If you need help, use Stack Overflow. (Tag 'alamofire')
  • If you'd like to ask a general question, use Stack Overflow.
  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Alamofire into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'AlamofireNetworkActivityIndicator', '~> 3.1'

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Alamofire into your Xcode project using Carthage, specify it in your Cartfile:

github "Alamofire/AlamofireNetworkActivityIndicator" ~> 3.1

Swift Package Manager (requires Xcode 11)

  1. Select File > Swift Packages > Add Package Dependency. Enter https://github.com/Alamofire/AlamofireNetworkActivityIndicator in the "Choose Package Repository" dialog.
  2. In the next page, specify the version resolving rule as "Up to Next Major" with "3.1.0" as its earliest version.
  3. After Xcode checking out the source and resolving the version, you can choose the "AlamofireNetworkActivityIndicator" library and add it to your app target.

Manually

If you prefer not to use either of the aforementioned dependency managers, you can integrate AlamofireNetworkActivityIndicator into your project manually.

Embedded Framework

  • Open up Terminal, cd into your top-level project directory, and run the following command "if" your project is not initialized as a git repository:
$ git init
  • Add AlamofireNetworkActivityIndicator as a git submodule by running the following command:
$ git submodule add https://github.com/Alamofire/AlamofireNetworkActivityIndicator.git
  • Open the new AlamofireNetworkActivityIndicator folder, and drag the AlamofireNetworkActivityIndicator.xcodeproj into the Project Navigator of your application's Xcode project.

    It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter.

  • Select the AlamofireNetworkActivityIndicator.xcodeproj in the Project Navigator and verify the deployment target matches that of your application target.

  • Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.

  • In the tab bar at the top of that window, open the "General" panel.

  • Click on the + button under the "Embedded Binaries" section.

  • You will see two different AlamofireNetworkActivityIndicator.xcodeproj folders each with two different versions of the AlamofireNetworkActivityIndicator.framework nested inside a Products folder.

    It does not matter which Products folder you choose from.

  • Select the AlamofireNetworkActivityIndicator.framework and add it to your project.

  • And that's it!

    The AlamofireNetworkActivityIndicator.framework is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.


Usage

The NetworkActivityIndicatorManager manages the state of the network activity indicator. To begin using it, all that is required is to enable the shared instance in application:didFinishLaunchingWithOptions: in your AppDelegate.

NetworkActivityIndicatorManager.shared.isEnabled = true

By enabling the shared manager for the system, the network activity indicator will show and hide automatically as Alamofire requests start and complete.

Notifications

The NetworkActivityIndicatorManager manages the currently active network request count by observing notifications emitted from Alamofire. By observing the task state changes, the shared manager always knows how many requests are currently active and updates the visibility of the activity indicator accordingly.

It is possible to have the shared manager observe URLSession instances not inside Alamofire. You will need to emit matching notifications from the URLSessionDelegate matching those found in Alamofire.

Delay Timers

In order to make the activity indicator experience for a user as pleasant as possible, there need to be start and stop delays added in to avoid flickering. There are two such delay timers built into the shared manager.

Start Delay

The start delay is a time interval indicating the minimum duration of networking activity that should occur before the activity indicator is displayed. This helps avoid needlessly displaying the indicator for really fast network requests. The default value is 1.0 second. You can easily change the default value if needed.

NetworkActivityIndicatorManager.shared.startDelay = 1.0

Completion Delay

The completion delay is a time interval indicating the duration of time that no networking activity should be observed before dismissing the activity indicator. This allows the activity indicator to be continuously displayed between multiple network requests. Without this delay, the activity indicator tends to flicker. The default value is 0.2 seconds. You can easily change the default value if needed.

NetworkActivityIndicatorManager.shared.completionDelay = 0.2

FAQ

Why is this not in Alamofire?

In order to allow Alamofire to continue to be used in App Extensions, this logic could not be included in the Alamofire framework. In order to submit an App Extension to the App Store, it can only be linked against frameworks that specify they only use App Extension safe APIs. Since we want users to be able to use Alamofire in App Extensions, we MUST set the Require Only App Extension Safe APIs to true. Because of this, we cannot call non-safe App Extension APIs in the Alamofire framework. Controlling the activity indicator on iOS is done through non-safe App Extension APIs. Because of this, a separate library needed to be created.

But what about availability you say? Doesn't help in this case because availability checks still compile all the code. We could not use #if os(iOS) either because you cannot compile out logic specifically for iOS, but not for an iOS App Extension.


Credits

Alamofire is owned and maintained by the Alamofire Software Foundation. You can follow them on Twitter at @AlamofireSF for project updates and releases.

Donations

The ASF is looking to raise money to officially stay registered as a federal non-profit organization. Registering will allow us members to gain some legal protections and also allow us to put donations to use, tax free. Donating to the ASF will enable us to:

  • Pay our yearly legal fees to keep the non-profit in good status
  • Pay for our mail servers to help us stay on top of all questions and security issues
  • Potentially fund test servers to make it easier for us to test the edge cases
  • Potentially fund developers to work on one of our projects full-time

The community adoption of the ASF libraries has been amazing. We are greatly humbled by your enthusiasm around the projects, and want to continue to do everything we can to move the needle forward. With your continued support, the ASF will be able to improve its reach and also provide better legal safety for the core members. If you use any of our libraries for work, see if your employers would be interested in donating. Any amount you can donate today to help us reach our goal would be greatly appreciated.

paypal

License

AlamofireNetworkActivityIndicator is released under the MIT license. See LICENSE for details.

Comments
  • Migrate to swift 4.0

    Migrate to swift 4.0

    Issue Link :link:

    This fixes #43 where building with Carthage on Xcode 10.2 was failing due to Swift 3 being deprecated.

    Goals :soccer:

    • Allow using AlamofireNetworkActivityIndicator with Xcode 10.2.

    Implementation Details :construction:

    • All targets had their Swift version updated from 3.0 to 4.0.
    • Updated README.md for bumped requirements.

    Testing Details :mag:

    No changes made to testing due to Travis not having an xcode10.2 official release image available yet. Would be good to add an iOS 12.2 simulator to tests and build against Xcode 10.2 in the future once the image is available.

    opened by rzulkoski 7
  • Separate AlamofireNetworkActivityIndicator from Alamofire?

    Separate AlamofireNetworkActivityIndicator from Alamofire?

    Hi there! We were able to use AlamofireNetworkActivityIndicator without Alamofire by just removing the notification registration methods. I'd love to figure out a way to expose this class as its own framework in such a way that Alamofire users could still use this seamlessly as they do today, but folks like us could install a subspec that didn't require Alamofire. I'd be open to doing the work here too. Thanks!

    opened by benasher44 6
  • Feature - Network Activity Indicator

    Feature - Network Activity Indicator

    This PR adds the NetworkActivityIndicatorManager class and all the tests to verify behavior. Code coverage is currently at 98% and looking good.

    The general approach is fairly similar to AFN with a simplification of not having to swizzle the NSURLSessionTask.State changes since we can rely on the Request methods directly. While this approach does not work if the user uses the task property directly to resume or suspend the task, this should be able to be resolved with documentation. This is certainly a better tradeoff than swizzling the task state. AFN couldn't use this approach b/c there is no concept of a Request.

    @jshier and I have a huge conversation on the design choices of using NSNotification instead of closures on the Manager or Request classes. We decided that it is best in this case to use notifications since it is a broadcast that could have multiple observers.

    network activity indicator notifications delay timers 
    opened by cnoon 5
  • Carthage compilation error with Xcode 10.2

    Carthage compilation error with Xcode 10.2

    What did you do?

    Xcode 10.2

    carthage bootstrap --platform iOS

    What did you expect to happen?

    Install AlamofireNetworkActivityIndicator from Carthage package manager

    What happened instead?

    Build Failed
    Task failed with exit code 65:
    
    Build system information
    error: SWIFT_VERSION '3.0' is unsupported, supported versions are: 4.0, 4.2, 5.0. (in target 'AlamofireNetworkActivityIndicator')
    
    ** ARCHIVE FAILED **
    

    Alamofire Environment

    Alamofire version: 4.8.1 AlamofireNetworkActivityIndicator: 2.3.0 Xcode version: 10.2 (10E125) Swift version: Swift 4.0 4.2 5.0 macOS version running Xcode: 10.14.3

    opened by Serahug 4
  • Make Alamofire an optional dependency

    Make Alamofire an optional dependency

    Issue Link :link:

    This fixes #32, making Alamofire optional.

    Goals :soccer:

    • Allow using AlamofireNetworkActivityIndicator without Alamofire

    Implementation Details :construction:

    • This uses the new (in Swift 4.1) #if canImport to conditionally import Alamofire and setup the default notification listening behavior that is currently used by Alamofire users.
    • If Alamofire cannot be imported, no notification listening is setup by default, and clients of this library can now register notifications used by other libraries for this library to listen to.

    Testing Details :mag:

    • [x] Add tests for the public notification method
    • [x] Setup travis to test with and without Alamofire
    opened by benasher44 4
  • Spinner can be left up indefinitely

    Spinner can be left up indefinitely

    The indicator works great. However there's a threading issue in decrementActivityCount().

    This has a line:

    guard activityCount > 0 else { return }
    

    To prevent the activityCount going negative. (I'm curious why this line was introduced.) I have a situation where the activityCount would go negative. The debugger hits the else part of the guard. I believe the timing hole is around AlamoFire's resume() method.

    AlamoFire's Request.resume() method (I added the comments):

    public func resume() {
        if startTime == nil { startTime = CFAbsoluteTimeGetCurrent() }
    
        task.resume()
    
        // TIMING HOLE HERE. 
        // The task comes back fast (e.g. from cache) before we call postNotificationName. 
        // The decrement is called in the result callback, and activityCount should go to -1. (But doesn't due to the guard > 0)
        // Then this thread resumes and posts its notification about the task starting.
        // Now the activity indicator's count is 1... forever above zero, so the indicator stays on.
        NSNotificationCenter.defaultCenter().postNotificationName(Notifications.Task.DidResume, object: task)
    }
    

    I see no reason for the guard activityCount > 0 line. Removing it would fix this hole.

    bug delay timers 
    opened by graham-perks-snap 4
  • Error installing with Swift Package Manager

    Error installing with Swift Package Manager

    What did you do?

    I tried to install from SPM with and without Alamofire 5.0.2 installed

    What did you expect to happen?

    The package installed

    What happened instead?

    Xcode shows me this error:

    Showing All Messages : terminated(128): /Applications/Xcode.app/Contents/Developer/usr/bin/git -C /Users/diego/Library/Developer/Xcode/DerivedData/TestAlamofire-gvqycjnmlwcnmvfowrhyoettyohc/SourcePackages/checkouts/AlamofireNetworkActivityIndicator submodule update --init --recursive output: fatal: No url found for submodule path 'Carthage/Checkouts/Alamofire' in .gitmodules

    Alamofire Environment

    **Alamofire version: 5.0.2 **AlamofireNetworkActivityIndicator: 3.0.0 **Xcode version: 11.3.1 (11C504) **Swift version: 5.1 **macOS version running Xcode: 10.15.3 (19D76)

    Demo Project

    Create a new empty project and try to install AlamofireNetworkActivityIndicator from SPM with or without Alamofire installed will show this error:

    Captura de pantalla 2020-02-24 a las 13 30 58 spm 
    opened by diecalo 3
  • unsupported Swift 3.0

    unsupported Swift 3.0

    I cannot build it with Carthage because Xcode 10.2 doesn't support Swift 3.X. Could you upgrade it to minimum Swift 4.0 at least.

    SWIFT_VERSION = 3.0;

    opened by shinma 3
  • Swift 4.2

    Swift 4.2

    Issue Link :link:

    Apple renamed RunLoop.Mode in Swift 4.2, which broke compilation. Xcode 10 and Swift 4.2 are out now, so I thought I'd open a PR.

    Goals :soccer:

    Swift 4.2 support.

    Implementation Details :construction:

    Added a simple #if swift(>=4.2) block around the relevant code. Also incremented the podspec version.

    Testing Details :mag:

    @jshier I noticed you had your own branch where you were also tweaking some tests and playing around with the Alamofire version - wasn't sure about that but figured I should leave that out...?

    opened by dclelland 3
  • ActivityCount goes below 0 preventing the ActivityIndicator to show up

    ActivityCount goes below 0 preventing the ActivityIndicator to show up

    What did you do?

    I was using the AlamofireImage swift library to download image thumbnails for a table view. I was also using this library to show the user network usage during the thumbnail downloading process.

    What did you expect to happen?

    Whenever a image thumbnail was being downloaded the network activity indicator would show up.

    What happened instead?

    Normally the activity indicator does show up, however when I scroll down the table view quickly, the activity indicator will no longer show up.

    Further debugging I found that the activityCount in the NetworkActivityIndicatorManager would actually go in the negatives.

    I found that there were more notifications calls Notification.Name.Task.DidComplete than the corresponding Notification.Name.Task.DidResume.

    My suspicions are that when scrolling quickly through the list, the AlamofireImage library will eventually queue up the network requests as the maximumActiveDownloads limit has been reached. And because the cell which has an image that has been queued may not even start the download network request before it gets cancelled, as the cell is being recycled, the Notification.Name.Task.DidComplete gets called for the request, but it never did send the Notification.Name.Task.DidResume as it never got started.

    The issue may in fact lie in the AlamofireImage library but wanted to bring it up here as the issue is noticeable with this library.

    Example log

    ...
    networkRequestDidStart = -9
    networkRequestDidComplete = -10
    networkRequestDidComplete = -11
    networkRequestDidComplete = -12
    networkRequestDidComplete = -13
    networkRequestDidStart = -12
    networkRequestDidStart = -11
    networkRequestDidComplete = -12
    networkRequestDidComplete = -13
    networkRequestDidStart = -12
    networkRequestDidComplete = -13
    networkRequestDidStart = -12
    networkRequestDidComplete = -13
    ...
    

    Alamofire Environment

    • Xcode (9.4.1)
    • Mac OSX (10.13.5)
    • Swift 4.1
    • Devices running iOS 11+
    • Alamofire (4.7.2)
    • AlamofireImage (3.3.1)
    • AlamofireNetworkActivityIndicator (2.2.1)

    Demo Project

    Here's a link to a very basic project that should highlight the problem. I found the negative activityCount by adding print statements around the lines in the NetworkActivityIndicatorManager:

    @objc private func networkRequestDidStart() {
            incrementActivityCount()
            print("networkRequestDidStart = \(activityCount)")
        }
    
        @objc private func networkRequestDidComplete() {
            decrementActivityCount()
            print("networkRequestDidComplete = \(activityCount)")
        }
    

    GitHub Project

    bug 
    opened by jklapwyk 3
  • Remove BITCODE_GENERATION_MODE

    Remove BITCODE_GENERATION_MODE

    Goals :soccer:

    Remove BITCODE_GENERATION_MODE settings which leads to make binary always bitcode even target to device.

    Implementation Details :construction:

    If this project is added as subproject to other project, this project generate bitcode ALWAYS which should not be happened when build target to device directly. (for running on it)

    And more that, Alamofire project build correctly as is, so these error occurs while linking AlamofireNetworkActivityIndicator:

    ld: bitcode bundle could not be generated because '<Alamofire Framework Binary Path>' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build file '<Alamofire Framework Binary Path>' for architecture armv7
    

    Testing Details :mag:

    I tested it through embed as subproject, and carthage build.

    opened by sinoru 3
  • Bump tzinfo from 1.2.7 to 1.2.10

    Bump tzinfo from 1.2.7 to 1.2.10

    Bumps tzinfo from 1.2.7 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    v1.2.9

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    TZInfo v1.2.9 on RubyGems.org

    v1.2.8

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    TZInfo v1.2.8 on RubyGems.org

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Version 1.2.9 - 16-Dec-2020

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    Version 1.2.8 - 8-Nov-2020

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.
    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump cocoapods-downloader from 1.3.0 to 1.6.3

    Bump cocoapods-downloader from 1.3.0 to 1.6.3

    Bumps cocoapods-downloader from 1.3.0 to 1.6.3.

    Release notes

    Sourced from cocoapods-downloader's releases.

    1.6.3

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1

    Enhancements
    • None.
    Bug Fixes
    • Fix "can't modify frozen string" errors when pods are integrated using the branch option
      buju77 #10920

    1.5.0

    ... (truncated)

    Changelog

    Sourced from cocoapods-downloader's changelog.

    1.6.3 (2022-04-01)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2 (2022-03-28)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1 (2022-03-23)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0 (2022-03-22)

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1 (2021-09-07)

    Enhancements
    • None.

    ... (truncated)

    Commits
    • c03e2ed Release 1.6.3
    • f75bccc Disable Bazaar tests due to macOS 12.3 not including python2
    • 52a0d54 Merge pull request #128 from CocoaPods/validate_before_dl
    • d27c983 Ensure that the git pre-processor doesn't accidentally bail also
    • 3adfe1f [CHANGELOG] Add empty Master section
    • 591167a Release 1.6.2
    • d2564c3 Merge pull request #127 from CocoaPods/validate_before_dl
    • 99fec61 Switches where we check for invalid input, to move it inside the download fun...
    • 96679f2 [CHANGELOG] Add empty Master section
    • 3a7c54b Release 1.6.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump redcarpet from 3.5.0 to 3.5.1

    Bump redcarpet from 3.5.0 to 3.5.1

    Bumps redcarpet from 3.5.0 to 3.5.1.

    Release notes

    Sourced from redcarpet's releases.

    Redcarpet v3.5.1

    Fix a security vulnerability using :quote in combination with the :escape_html option.

    Reported by Johan Smits.

    Changelog

    Sourced from redcarpet's changelog.

    Version 3.5.1 (Security)

    • Fix a security vulnerability using :quote in combination with the :escape_html option.

      Reported by Johan Smits.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(3.1.0)
  • 3.1.0(Apr 6, 2020)

  • 3.0.1(Feb 29, 2020)

  • 3.0.0(Feb 17, 2020)

  • 3.0.0-beta.3(May 4, 2019)

    Released on 2019-05-04. All issues associated with this milestone can be found using this filter.

    Fixed

    • Issue with AppStore submissions where the pre-release version in the bundle short versions string was being rejected when built with Carthage or as a submodule.
    • Issue in the Carthage installation instructions in the README.
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-beta.2(Apr 13, 2019)

    Released on 2019-04-13. All issues associated with this milestone can be found using this filter.

    Updated

    • Project to require Alamofire 5.0.0-beta.5+ as a dependency.
    • Activity tracking to monitor task events rather than request events to improve accuracy.
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-beta.1(Apr 10, 2019)

    Released on 2019-04-10. All issues associated with this milestone can be found using this filter.

    Added

    • New requestDidStart and requestDidStop APIs based on requestIDs to replace the increment and decrement activity count APIs.

    Updated

    • Project to use Swift 5 only and require Alamofire 5.0.0-beta.4+ as a dependency.

    Fixed

    • Issue where activity count could become negative causing the network activity indicator to not display correctly.
    Source code(tar.gz)
    Source code(zip)
  • 2.4.0(Apr 6, 2019)

    Released on 2019-04-06. All issues associated with this milestone can be found using this filter.

    Updated

    • Project to use Swift 4 as the default language version for compatiblity with the Swift 5 compiler and Xcode 10.2.
    Source code(tar.gz)
    Source code(zip)
  • 2.3.0(Sep 15, 2018)

  • 2.2.1(Apr 1, 2018)

    Released on 2018-03-31. All issues associated with this milestone can be found using this filter.

    Added

    • Jazzy docs.
    • Pull request and issue templates.

    Updated

    • Project settings and dependencies for Xcode 9.3 and Swift 4.1.

    Fixed

    • Swift Package Manager integration by removing Swift Package Manager support.
    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Jun 17, 2017)

    All issues associated with this milestone can be found using this filter.

    Updated

    • The Alamofire submodule to the 4.5.0 release along with all dependency requirements.
    • Updated all project settings to Xcode 9 for support for Swift 3.1, 3.2, and 4.0.

    Fixed

    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Nov 21, 2016)

  • 2.0.1(Oct 1, 2016)

    All issues associated with this milestone can be found using this filter.

    Added

    • New .swift-version file to repo and reactivated pod lib lint in Travis file.
    • The OS_ACTIVITY_MODE environment variable to disable excessive logging.

    Updated

    • The Alamofire submodule to the 4.0.1 release.

    Fixed

    • Issue where delay timers were being added to main run loop from non-main queues.
    • Issue where spinner could be left up indefinitely due to decrement race condition.
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Sep 11, 2016)

    All issues associated with this milestone can be found using this filter.

    Updated

    • All source, test and example logic as well as project settings to compile against the Xcode 8 beta releases.
    • Deployment target and README requirements to iOS 9.0.
    • All source and test APIs to match Swift 3 design guidelines.
    • The Cartfile and the Alamofire submodule to the 4.0.0 release.
    • The docstrings to use the new Swift 3 formatting guidelines.
    • The podspec version to 2.0.0 and bumped deployment target and dependency.
    • Project settings by running Swift 3 conversion tool and setting ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to YES.
    • The travis-ci yaml file to build against Xcode 8 osx_image.
    • Code signing to automatic with no team and updated code signing identities.
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Sep 8, 2016)

    All issues associated with this milestone can be found using this filter.

    Updated

    • The build status badge in the README now only reports the status of the master branch.
    • The source, test and example code along with project settings to support Swift 2.2 and Swift 2.3 simultaneously.
    • Updated the travis yaml file for Swift 2.3 and the new OS target versions.
    • Updated the Cartfile and Alamofire submodule to the 3.5.0 release.
    • Updated Xcode project settings based on Xcode 8 GM recommendations.
    • Code coverage generation is now disabled on framework targets to improve stability.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Mar 24, 2016)

    All issues associated with this milestone can be found using this filter.

    Updated

    • The Alamofire submodule to the 3.3.0 release along with the Cartfile and Podspec dependencies.
    • All source code, tests and example logic to use Swift 2.2 conventions.
    • The required version of Xcode to 7.3 in the README.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Feb 8, 2016)

Owner
Alamofire
Elegant Networking in Swift
Alamofire
A lightweight and awesome loading Activity Indicator for your iOS app.

BPCircleActivityIndicator BPCircleActivityIndicator is a clean and easy-to-use Activity Indicator meant to display the progress of an ongoing task on

Ben.Park 46 Aug 12, 2022
A simple and awesome loading Activity Indicator(with block moving animation) for your iOS app.

BPBlockActivityIndicator BPBlockActivityIndicator is a clean and easy-to-use Activity Indicator meant to display the progress of an ongoing task on iO

Ben.Park 43 Nov 6, 2021
Yet another task indicator

SendIndicator Yet another task indicator Requirements Installation Usage License Requirements iOS 8.0+ Swift 3.0+ Xcode 8.0+ Installation CocoaPods Co

Leonardo Cardoso 64 Aug 17, 2022
Completely customizable progress based loaders drawn using custom CGPaths written in Swift

FillableLoaders Completely customizable progress based loaders drawn using custom CGPaths written in Swift Waves Plain Spike Rounded Demo: Changelog:

Pol Quintana 2.1k Dec 31, 2022
Awesome loading animations using 3D engine written with Swift

RSLoadingView Introduction RSLoadingView bring your app to the new age of loading animations using 3D engine. Written with Swift Customizable Using Ap

null 419 Dec 16, 2022
A view class for iOS that makes uploading easy and beautiful.

SVUploader A view class for iOS that makes uploading easy and beautiful. Demo SVUploader is fully customizable - check out 2 demos. Installation Just

Kiran 79 Apr 18, 2022
Flexible Stepped Progress Bar for IOS

FlexibleSteppedProgressBar This is a stepped progress bar for IOS. The base code is derived from ABSteppedProgressBar. Most of the design is customisa

Amrata Baghel 549 Jan 6, 2023
Material Linear Progress Bar for your iOS apps

LinearProgressBar Material Linear Progress Bar for your iOS apps Installation Carthage: github "Recouse/LinearProgressBar" CocoaPods: Add this to you

Firdavs Khaydarov 161 Dec 5, 2022
IOS HUD Swift Library

JHProgressHUD JHProgressHUD is an iOS class written in Swift to display a translucent HUD with an indicator and/or labels while work is being done in

Harikrishnan T 79 Feb 27, 2021
An Alamofire network activity logger view

?? AlamofireLogbook An Alamofire network activity logger view Installation AlamofireLogbook is available through CocoaPods. To install it, simply add

Michael Daoud 12 Oct 30, 2019
Controls-Practice-UIKit- - Controls Practice (UIKit)

Controls Practice (UIKit) Change a number 0 to 255 different ways: Button (+1) I

null 1 Feb 13, 2022
A beautiful activity indicator and modal alert written in Swift (originally developed for my app DoodleDoodle) Using blur effects, translucency, flat and bold design - all iOS 8 latest and greatest

SwiftSpinner SwiftSpinner is an extra beautiful activity indicator with plain and bold style. It uses dynamic blur and translucency to overlay the cur

Marin Todorov 2.1k Dec 19, 2022
An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode's Issue Navigator giving them project-wide visibility.

XcodeIssueGenerator An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode

Wunderman Thompson Apps 143 Oct 11, 2022
The easiest way to handle a simple full screen activity indicator in iOS. Written in Swift.

LLSpinner An easy way to handle full screen activity indicator. Easy to use Get Started // Show spinner LLSpinner.spin() // Hide spinner LLSpinner.st

Aleph Retamal 36 Dec 9, 2021
A lightweight and awesome loading Activity Indicator for your iOS app.

BPCircleActivityIndicator BPCircleActivityIndicator is a clean and easy-to-use Activity Indicator meant to display the progress of an ongoing task on

Ben.Park 46 Aug 12, 2022
A simple and awesome loading Activity Indicator(with block moving animation) for your iOS app.

BPBlockActivityIndicator BPBlockActivityIndicator is a clean and easy-to-use Activity Indicator meant to display the progress of an ongoing task on iO

Ben.Park 43 Nov 6, 2021
SwiftUI view that download and display image from URL and displaying Activity Indicator while loading .

ViewWithActivityIndicator ViewWithActivityIndicator is a SwiftUI view that download and display image from URL and displaying Activity Indicator while

Ali Adam 28 Feb 3, 2022
A simple and customizable activity indicator.

日本語 KRActivityIndicatorView KRActivityIndicatorView is a simple and customizable activity indicator written in Swift. You can add KRActivityIndicatorV

K.R.Impedance 47 Jul 11, 2022
Floating indicator, mimicrate to indicator which appear when silent mode turn on / off. Support large texts.

SPIndicator About Mimicrate to indicator which appear when silent mode turn on / off. Availalbe 2 animated presets: done & error. Also support custom

Ivan Vorobei 568 Dec 30, 2022
Recording Indicator Utility lets you turn off the orange microphone recording indicator light for live events and screencasts.

Recording Indicator Utility Recording Indicator Utility lets you turn off the orange microphone recording indicator light, making it ideal for profess

Tyshawn Cormier 121 Jan 1, 2023