Uygulama Kontrolü'nü Apple platformlarında özel sağlayıcıyla kullanmaya başlayın

Bu sayfada, özel App Check sağlayıcınızı kullanarak Apple uygulamasında App Check özelliğini nasıl etkinleştireceğiniz gösterilmektedir. App Check özelliğini etkinleştirdiğinizde yalnızca uygulamanızın projenizin Firebase kaynaklarına erişebilmesini sağlarsınız.

Yerleşik sağlayıcılarla App Check kullanmak istiyorsanız App Check with App Attest ve App Check with DeviceCheck dokümanlarına bakın.

Başlamadan önce

1. App Check kitaplığını uygulamanıza ekleme

  1. Firebase bağımlılıklarını yüklemek ve yönetmek için Swift Package Manager'ı kullanın.

    Xcode'da uygulama projeniz açıkken File > Add Packages'a (Dosya > Paket Ekle) gidin, Firebase Apple platformları SDK deposunu (https://github.com/firebase/firebase-ios-sdk) ekleyin ve FirebaseAppCheck kitaplığını seçin.

2. App Check protokollerini uygulama

İlk olarak, AppCheckProvider ve AppCheckProviderFactory protokollerini uygulayan sınıflar oluşturmanız gerekir.

AppCheckProvider sınıfınızda, özel App Check sağlayıcınızın kimlik doğrulama kanıtı olarak istediği bilgileri toplayan ve App Check jetonu karşılığında jeton edinme hizmetinize gönderen bir getToken(completion:) yöntemi olmalıdır. App Check SDK, jeton önbelleğe almayı yönetir. Bu nedenle, getToken(completion:) uygulamanızda her zaman yeni bir jeton alın.

Swift

class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
  var app: FirebaseApp

  init(withFirebaseApp app: FirebaseApp) {
    self.app = app
    super.init()
  }

  func getToken() async throws -> AppCheckToken {
    let getTokenTask = Task { () -> AppCheckToken in
      // ...

      // Create AppCheckToken object.
      let exp = Date(timeIntervalSince1970: expirationFromServer)
      let token = AppCheckToken(
        token: tokenFromServer,
        expirationDate: exp
      )

      if Date() > exp {
        throw NSError(domain: "ExampleError", code: 1, userInfo: nil)
      }

      return token
    }

    return try await getTokenTask.value
  }

}

Objective-C

@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider>

@property FIRApp *app;

- (id)initWithApp:(FIRApp *)app;

@end

@implementation YourCustomAppCheckProvider

- (id)initWithApp:app {
    self = [super init];
    if (self) {
        self.app = app;
    }
    return self;
}

- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable,
                                                 NSError * _Nullable))handler {
    dispatch_async(dispatch_get_main_queue(), ^{
        // Logic to exchange proof of authenticity for an App Check token.
        // ...

        // Create FIRAppCheckToken object.
        NSTimeInterval exp = expirationFromServer;
        FIRAppCheckToken *token
            = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer
                                       expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]];

        // Pass the token or error to the completion handler.
        handler(token, nil);
    });
}

@end

Ayrıca, AppCheckProviderFactory sınıfını uygulayarak AppCheckProvider uygulamanızın örneklerini oluşturun:

Swift

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

Objective-C

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
    return [[YourCustomAppCheckProvider alloc] initWithApp:app];
}

@end

3. App Check başlatılıyor

Aşağıdaki başlatma kodunu uygulama temsilcinize veya uygulama başlatıcınıza ekleyin:

Swift

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Objective-C

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

Sonraki adımlar

App Check kitaplığı uygulamanıza yüklendikten sonra güncellenmiş uygulamayı kullanıcılarınıza dağıtmaya başlayın.

Güncellenen istemci uygulaması, Firebase'e yaptığı her istekle birlikte App Check jetonları göndermeye başlar ancak Firebase ürünleri, Firebase konsolunun App Check bölümünde zorunlu kılmayı etkinleştirene kadar jetonların geçerli olmasını gerektirmez.

Metrikleri izleme ve yaptırımı etkinleştirme

Ancak zorlamayı etkinleştirmeden önce, bu işlemin mevcut meşru kullanıcılarınızın deneyimini kesintiye uğratmayacağından emin olmanız gerekir. Öte yandan, uygulama kaynaklarınızın şüpheli bir şekilde kullanıldığını görüyorsanız yaptırımı daha erken etkinleştirmek isteyebilirsiniz.

Bu kararı vermenize yardımcı olması için kullandığınız hizmetlerin App Checkmetriklerine bakabilirsiniz:

App Check yaptırım özelliğini etkinleştirme

App Check özelliğinin kullanıcılarınızı nasıl etkileyeceğini anladığınızda ve devam etmeye hazır olduğunuzda App Check zorunluluğunu etkinleştirebilirsiniz:

Hata ayıklama ortamlarında App Check kullanma

Uygulamanızı App Check için kaydettikten sonra, uygulamanızı App Check'nın normalde geçerli olarak sınıflandırmayacağı bir ortamda (ör. geliştirme sırasında simülasyon aracında veya sürekli entegrasyon (CI) ortamında) çalıştırmak istiyorsanız uygulamanızın gerçek bir onay sağlayıcı yerine App Check hata ayıklama sağlayıcısını kullanan bir hata ayıklama derlemesini oluşturabilirsiniz.

Apple platformlarında hata ayıklama sağlayıcısıyla App Check kullanma başlıklı makaleyi inceleyin.