AppDelegate.m 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /*
  2. * Copyright 2017 Google
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #import "AppDelegate.h"
  17. #import <FirebaseInAppMessaging/FIRIAMClearcutUploader.h>
  18. #import <FirebaseInAppMessaging/FIRIAMRuntimeManager.h>
  19. #import <FirebaseInAppMessaging/FIRInAppMessaging+Bootstrap.h>
  20. #import <FirebaseInAppMessaging/NSString+FIRInterlaceStrings.h>
  21. #import <FirebaseCore/FirebaseCore.h>
  22. #import <FirebaseDynamicLinks/FirebaseDynamicLinks.h>
  23. @interface FIRInAppMessaging (Testing)
  24. + (void)disableAutoBootstrapWithFIRApp;
  25. @end
  26. @implementation AppDelegate
  27. - (BOOL)application:(UIApplication *)application
  28. didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  29. // Override point for customization after application launch.
  30. NSLog(@"application started");
  31. [FIRInAppMessaging disableAutoBootstrapWithFIRApp];
  32. [FIROptions defaultOptions].deepLinkURLScheme = @"fiam-testing";
  33. [FIRApp configure];
  34. FIRIAMSDKSettings *sdkSetting = [[FIRIAMSDKSettings alloc] init];
  35. sdkSetting.apiServerHost = @"firebaseinappmessaging.googleapis.com";
  36. NSString *serverHostNameFirstComponent = @"pa.ogepscm";
  37. NSString *serverHostNameSecondComponent = @"lygolai.o";
  38. sdkSetting.clearcutServerHost = [NSString fir_interlaceString:serverHostNameFirstComponent
  39. withString:serverHostNameSecondComponent];
  40. sdkSetting.apiHttpProtocol = @"https";
  41. sdkSetting.fetchMinIntervalInMinutes = 0.1; // ok to refetch every 6 seconds
  42. sdkSetting.loggerMaxCountBeforeReduce = 800;
  43. sdkSetting.loggerSizeAfterReduce = 600;
  44. sdkSetting.appFGRenderMinIntervalInMinutes = 0.1;
  45. sdkSetting.loggerInVerboseMode = YES;
  46. sdkSetting.firebaseAutoDataCollectionEnabled = NO;
  47. sdkSetting.clearcutStrategy =
  48. [[FIRIAMClearcutStrategy alloc] initWithMinWaitTimeInMills:5 * 1000 // 5 seconds
  49. maxWaitTimeInMills:30 * 1000 // 30 seconds
  50. failureBackoffTimeInMills:60 * 1000 // 60 seconds
  51. batchSendSize:50];
  52. [FIRInAppMessaging bootstrapIAMWithSettings:sdkSetting];
  53. return YES;
  54. }
  55. - (BOOL)application:(UIApplication *)application
  56. continueUserActivity:(NSUserActivity *)userActivity
  57. restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *))restorationHandler {
  58. NSLog(@"handle page url %@", userActivity.webpageURL);
  59. BOOL handled = [[FIRDynamicLinks dynamicLinks]
  60. handleUniversalLink:userActivity.webpageURL
  61. completion:^(FIRDynamicLink *_Nullable dynamicLink, NSError *_Nullable error) {
  62. if (dynamicLink) {
  63. NSLog(@"dynamic link recogized with url as %@", dynamicLink.url.absoluteString);
  64. [self showDeepLink:dynamicLink.url.absoluteString forUrlType:@"universal link"];
  65. } else {
  66. NSLog(@"error happened %@", error);
  67. }
  68. }];
  69. return handled;
  70. }
  71. - (void)showDeepLink:(NSString *)url forUrlType:(NSString *)urlType {
  72. NSString *message = [NSString stringWithFormat:@"App wants to open a %@ : %@", urlType, url];
  73. UIAlertController *alert =
  74. [UIAlertController alertControllerWithTitle:@"Deep link recognized"
  75. message:message
  76. preferredStyle:UIAlertControllerStyleAlert];
  77. UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"OK"
  78. style:UIAlertActionStyleDefault
  79. handler:^(UIAlertAction *action){
  80. }];
  81. [alert addAction:defaultAction];
  82. [UIApplication.sharedApplication.keyWindow.rootViewController presentViewController:alert
  83. animated:YES
  84. completion:nil];
  85. }
  86. - (BOOL)application:(UIApplication *)app
  87. openURL:(NSURL *)url
  88. options:(NSDictionary<NSString *, id> *)options {
  89. return [self application:app openURL:url sourceApplication:@"source app" annotation:@{}];
  90. }
  91. - (BOOL)application:(UIApplication *)application
  92. openURL:(NSURL *)url
  93. sourceApplication:(NSString *)sourceApplication
  94. annotation:(id)annotation {
  95. NSLog(@"handle link with custom scheme: %@", url.absoluteString);
  96. [self showDeepLink:url.absoluteString forUrlType:@"custom scheme url"];
  97. return YES;
  98. }
  99. @end