Partage
  • Partager sur Facebook
  • Partager sur Twitter

(IOS) Ajout liens universels AppDelegate

    8 avril 2021 à 12:17:01

    Salut à tous.

    Je travaille sur une appli qui a été générée pour aller à la fois sur Android et ios par Cordova. je ne travaille sur mac que pour mettre à jour l'application. Je n'ai donc que très très peu de notions sur ce type de système.

    Je souhaite ajouter les liens universels afin d'ouvrir l'application au lieu de la page web correspondante. Sur Android, aucun souci, ça fonctionne. C'est côté Apple que ça coince. Si je suis la doc de Apple, je dois, en plus de créer le fichier apple-app-site-association, autoriser l'application à utiliser les Associated domains, je dois aussi modifier le fichier AppDelegate pour rediriger au bon endroit. 

    Or, là, je coince complètement. J'essaye d'utiliser ce qu'il y a dans la documentation ici, mais j'ai des erreurs en pagaille, j'ai l'impression que mon fichier AppDelegate et les morceaux e code de la doc ne sont pas dans le même langage. 

    J'ai ceci dans mon AppDelegate 

    #import "AppDelegate.h"
    #import "MainViewController.h"
    #import <OneSignal/OneSignal.h>
    
    @implementation AppDelegate
    
    - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
        userActivity:(NSUserActivity*)userActivity
    {
    
        self.viewController = [[MainViewController alloc] init];
        //Remove this method to stop OneSignal Debugging
          [OneSignal setLogLevel:ONE_S_LL_VERBOSE visualLevel:ONE_S_LL_NONE];
          
          //START OneSignal initialization code
          [OneSignal initWithLaunchOptions:launchOptions
           appId:@mon_id_app
           handleNotificationAction:nil
           settings:@{kOSSettingsKeyAutoPrompt: @false, kOSSettingsKeyInAppLaunchURL: @false}];
          OneSignal.inFocusDisplayType = OSNotificationDisplayTypeNotification;
    
          // promptForPushNotifications will show the native iOS notification permission prompt.
          // We recommend removing the following code and instead using an In-App Message to prompt for notification permission (See step 8)
          [OneSignal promptForPushNotificationsWithUserResponse:^(BOOL accepted) {
            NSLog(@"User accepted notifications: %d", accepted);
          }];
          //END OneSignal initializataion code
                
        userActivity.activityType == NSUserActivityTypeBrowsingWeb,
                let incomingURL = userActivity.webpageURL,
                let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
                return false
            }
    
            // Check for specific URL components that you need.
            guard let path = components.path,
            let params = components.queryItems else {
                return false
            }
        return [super application:application didFinishLaunchingWithOptions:launchOptions];
    }
    
    @end

    Guard n'est pas trouvé, let non plus, j'ai des erreurs du style

    Use of undeclared identifier 'let'

    ou

    Use of undeclared identifier 'guard'

    Je tiens également à ajouter que si je c/c bêtement ce qu'il y a dans la doc, (avec func...), le corps de la fonction n'est même pas trouvé. 

    Je suis complètement larguée car je n'ai jamais appris swift ou objective-c (si ce bazar est dans un de ces deux langages du moins). 

    Quelqu'un pourrait m'aiguiller dans la bonne direction? 

    Je vous remercie :)

    -
    Edité par Ryukotsei 8 avril 2021 à 12:19:40

    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2021 à 9:05:40

      Hello,

      Je te confirme que tu mélanges de l’Objectice-C et du Swift. Tes erreurs sont liées à la partie Swift. 

      Essaie de voir comment créer une variable en obj-c sur Google.

      Le guard Let sert à checker la nullabilite d’un objet. Tu peux remplacer par un if x == nil 

      • Partager sur Facebook
      • Partager sur Twitter
        14 avril 2021 à 9:32:29

        hey,

        Je te remercie pour ta réponse, donc si je comprends bien, j'ai mis le mauvais langage? x) 

        • Partager sur Facebook
        • Partager sur Twitter
          14 avril 2021 à 15:25:32

          Yep. À partir de la ligne 29 je dirais.

          -
          Edité par Geda 14 avril 2021 à 15:27:41

          • Partager sur Facebook
          • Partager sur Twitter
            14 avril 2021 à 15:29:59

            Je te remercie beaucoup pour la clarification, j'étais complètement paumée; je testerai dès que je pourrai, merci encore!
            • Partager sur Facebook
            • Partager sur Twitter

            (IOS) Ajout liens universels AppDelegate

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown