Files
firebase-ios-sdk/FirebaseAppDistribution/Sources/FIRFADApiService.h
T
16e062c355 Switch App Distribution SDK from AppAuth to FirebaseInstallations (#6126)
* Adding error handling and returning correct error codes

* * Handling auth cancellation a few other error cases

* Adding some logging for EAP (Using NSLogs temporarily. DONOT MERGE)

* Add in a setter for clientID to allow overrides (#5514)

* Add in a setter for clientID to allow overrides

* Update styling

* Adding some result parsing logs

* Fixing code hash logging

* Add FirebaseAppDistribution to ZipBuilder

* * Making sure keychain is accesible after first unlock even if app is backgrounded (#5563)
* Fix auth persistence logging and invalid type casting (#5631)
* Logging app id requesting releases (#5655)

* AppDistribution keychain access fixes (#5683)

* Using the GULKeychainUtils instead of custom keychain utility. Also added better logging

* Updating keychain name and fixing tests

* Code review feedback updates

* Making serviceID unique per app

* Adding gmp app id to the keychain along with the bundle id

* Moving Keychain Utility functions in the AuthPersistence class and deleting the utility class

* Lazy initialize auth state (#5755)

* Lazy initialize auth state

* Making sure we dont log an error is auth state is not persisted in the keychain

* Switch from NSLog to FIRFADLogger (#5756)

* Add FIRLogger
* Switch from NSLog to FIRFADLogger

* * Use FIS Auth for authenticating the tester
* Remove AppAuth and start wiring up interceptor to do sign in

* Extracting registration flow UI in interceptor

* Adding support for iOS 9 and 10

* Create app distribution api service to handle tester api calls. (#6060)

* Pull out calls to the FAD API to make them reuseable

* Fix tests and run styl updates

* Uncomment FIRFADLog Statements

* Use [] accessor rather than . accessor

* Re-running style updates

* Trying to get these checks to pass the first time around

* App distribution signin persist (#6063)

* Pull out calls to the FAD API to make them reuseable

* Fix tests and run styl updates

* Add in UserDefaults storage after a tester has signed in

* Add testing for the main AppDistribution file

* Ran style.sh

* Remove FIRFADLocalStorage and call GULUserDefaults directly. Update tests to stop mocking on teardown.

* Add support for dynamic url schemes and fix two crashes (#6081)

* Add support for dynamic url schemes and fix two crashes

  * Add support for dynamic url schemes in the format appdistribution-<app id without colons>
  * Fix crash when launching an app directly via a URL scheme
  * Fix a crash on iOS 10 simulator caused by calling NSLogv twice
  * Remove uses of NSLog
  * Fix warnings

* Switch encodedAppId to be a class method

* Fix styles

* Create changelog and readme in preparation for release. (#6095)

Just changing markdown files so will not wait for gha checks.

* Change slices property from copy to strong (#6097)

Fix lint warning

* Change error handlers to return bool values instead of void (#6101)

* Mapping sign in flow errors to app distribution errors. Also renaming AppDelegateInterceptor to FIRAppDistributionUIService (#6099)

* Add github action for App Distribution (#6094)

* Updating app distribution deployment target to iOS 9 (#6118)

* Making sure we return granular errors during sign in persistence. Also fixing some naming and comment issues (#6117)

* Encoding colons to dashes in the app id (#6119)

* Move Internal headers to Sources (#6106)

* Move Internal headers to Sources/ folder

* PR feedback

* Remove appDistribution from zip builder

* Respond to code review feedback (#6138)

* Initializing UIWindow using initWithWindowScene for ios 13 and removing UI code from main FIRAppDistribution.m (#6144)

* Initializing UIWindow using initWithWindowScene for ios 13. Also making sure we only reset window in the App delegate if a registration flow is in progress.

* Remove UI code from main class, add unit tests, and clean up UIService

* stylish

* Remove defines in favor of solely 'if (@available(iOS 13.0, *))'

* Respond to code review feedback

Co-authored-by: Cleo Schneider <cleoschneider@google.com>

Co-authored-by: Pranav Rajgopal <pranavrajgopal@google.com>
Co-authored-by: Cleo Schneider <cleoschneider@google.com>
2020-07-28 16:39:29 -04:00

95 lines
3.1 KiB
Objective-C

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import <Foundation/Foundation.h>
#import "FirebaseAppDistribution/Sources/Private/FIRAppDistributionRelease.h"
#import "FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h"
NS_ASSUME_NONNULL_BEGIN
/**
* @related FIRFADApiError
*
* The completion handler invoked when the list releases request returns.
* If the call fails we return the appropriate `error code`, described by
* `AppDistributionApiError`.
*
* @param releases The releases that are available to be installed.
* @param error The error describing why the new build request failed.
*/
typedef void (^FIRFADFetchReleasesCompletion)(NSArray *_Nullable releases, NSError *_Nullable error)
NS_SWIFT_NAME(AppDistributionFetchReleasesCompletion);
/**
* @related FIRFADApiError
*
* The completion handler invoked when the list releases request returns.
* If the call fails we return the appropriate `error code`, described by
* `AppDistributionApiError`.
*
* @param identifier The firebase installation identifier
* @param authTokenResult The installation auth token result.
* @param error The error describing why the new build request failed.
*/
typedef void (^FIRFADGenerateAuthTokenCompletion)(
NSString *_Nullable identifier,
FIRInstallationsAuthTokenResult *_Nullable authTokenResult,
NSError *_Nullable error) NS_SWIFT_NAME(AppDistributionGenerateAuthTokenCompletion);
// Label exceptions from AppDistributionApi calls.
FOUNDATION_EXPORT NSString *const kFIRFADApiErrorDomain;
// A service encapsulating calls to the App Distribtuion Tester API
@interface FIRFADApiService : NSObject
// Fetch releases from the AppDistribution Tester API
+ (void)fetchReleasesWithCompletion:(FIRFADFetchReleasesCompletion)completion;
// Generate a Installation Auth Token and fetch the installation id
+ (void)generateAuthTokenWithCompletion:(FIRFADGenerateAuthTokenCompletion)completion;
@end
/**
* @enum AppDistributionApiError
*/
typedef NS_ENUM(NSUInteger, FIRFADApiError) {
// Timeout error.
FIRFADApiErrorTimeout = 0,
// Token generation error
FIRFADApiTokenGenerationFailure = 1,
// Installation Identifier not found error
FIRFADApiInstallationIdentifierError = 2,
// Authentication failed
FIRFADApiErrorUnauthenticated = 3,
// Authorization failed
FIRFADApiErrorUnauthorized = 4,
// Releases or tester not found
FIRFADApiErrorNotFound = 5,
// Api request failure for unknown reason
FIRApiErrorUnknownFailure = 6,
// Failure to parse Api response
FIRApiErrorParseFailure = 7,
} NS_SWIFT_NAME(AppDistributionApiError);
NS_ASSUME_NONNULL_END