notification google clave autenticación apns ios push-notification ibm-cloud cordova-plugins ibm-mobile-services

ios - google - No se puede ejecutar bms-samples-cordova-hellopush-bms_samples_cordova_push-Swift.h archivo no encontrado



firebase push notification ios (1)

Pude ejecutar la aplicación de ejemplo bms-samples-cordova-hellopush usando los siguientes pasos:

  1. Clonado la muestra:

    git clone https://github.com/ibm-bluemix-mobile-services/bms-samples-cordova-hellopush

  2. Agregué mi APPLICATION_ROUTE y APPLICATION_GUID en mi [your-directory]/www/js/index.js (después de configurar las notificaciones de inserción para mi aplicación de inicio de servicios móviles en Bluemix)

  3. Se agregó la plataforma iOS a mi aplicación:

    cordova platform add [email protected]

  4. Se agregó el complemento Cordova:

    cordova plugin add ibm-mfp-push

  5. [your-app-name].xcodeproj mi archivo [your-app-name]/platforms/ios [your-app-name].xcodeproj en mi [your-app-name].xcodeproj [your-app-name]/platforms/ios con Xcode (cuando me preguntaron: Convertir a la última sintaxis de Swift , hice clic en Cancelar )

  6. Se agregó el encabezado de puente. Fuimos a Build settings > Swift Compiler - Code Generation > Objective-C Bridging Header y agregamos la siguiente ruta:

    [your-project-name]/Plugins/ibm-mfp-core/Bridging-Header.h

  1. Agregue el parámetro Frameworks. Fui a Build Settings > Linking > Runpath Search Paths y agregué el siguiente parámetro:

    @executable_path/Frameworks

  1. Proyecto Construido

  2. No estoy de acuerdo con las siguientes instrucciones de importación de inserción en mi encabezado de conexión en puente. Fuimos a [your-project-name]/Plugins/ibm-mfp-core/Bridging-Header.h :

  1. Actualicé mi aplicación cliente para usar el SDK de inserción

Aquí está mi AppDelegate.m actualizado:

/* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you 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. */ // // AppDelegate.m // bms-samples-cordova-push // // Created by ___FULLUSERNAME___ on ___DATE___. // Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved. // #import "AppDelegate.h" #import "MainViewController.h" #import "bms_samples_cordova_push-Swift.h" #import <Cordova/CDVPlugin.h> @implementation AppDelegate @synthesize window, viewController; - (id)init { /** If you need to do any extra app-specific initialization, you can do it here * -jm **/ NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; int cacheSizeMemory = 8 * 1024 * 1024; // 8MB int cacheSizeDisk = 32 * 1024 * 1024; // 32MB #if __has_feature(objc_arc) NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"]; #else NSURLCache* sharedCache = [[[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"] autorelease]; #endif [NSURLCache setSharedURLCache:sharedCache]; self = [super init]; return self; } #pragma mark UIApplicationDelegate implementation /** * This is main kick off after the app inits, the views and Settings are setup here. (preferred - iOS4 and up) */ - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { CGRect screenBounds = [[UIScreen mainScreen] bounds]; #if __has_feature(objc_arc) self.window = [[UIWindow alloc] initWithFrame:screenBounds]; #else self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease]; #endif self.window.autoresizesSubviews = YES; #if __has_feature(objc_arc) self.viewController = [[MainViewController alloc] init]; #else self.viewController = [[[MainViewController alloc] init] autorelease]; #endif // Set your app''s start page by setting the <content src=''foo.html'' /> tag in config.xml. // If necessary, uncomment the line below to override it. // self.viewController.startPage = @"index.html"; // NOTE: To customize the view''s frame size (which defaults to full screen), override // [self.viewController viewWillAppear:] in your view controller. [[CDVMFPPush sharedInstance] didReceiveRemoteNotificationOnLaunch:launchOptions]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } // this happens while we are running ( in the background, or from within our own app ) // only valid if bms-samples-cordova-push-Info.plist specifies a protocol to handle - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation { if (!url) { return NO; } // all plugins will get the notification, and their handlers will be called [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]]; return YES; } // repost all remote and local notification using the default NSNotificationCenter so multiple plugins may respond - (void) application:(UIApplication*)application didReceiveLocalNotification:(UILocalNotification*)notification { // re-post ( broadcast ) [[NSNotificationCenter defaultCenter] postNotificationName:CDVLocalNotification object:notification]; } #if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000 - (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window #else - (UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window #endif { // iPhone doesn''t support upside down by default, while the iPad does. Override to allow all orientations always, and let the root view controller decide what''s allowed (the supported orientations mask gets intersected). NSUInteger supportedInterfaceOrientations = (1 << UIInterfaceOrientationPortrait) | (1 << UIInterfaceOrientationLandscapeLeft) | (1 << UIInterfaceOrientationLandscapeRight) | (1 << UIInterfaceOrientationPortraitUpsideDown); return supportedInterfaceOrientations; } - (void)applicationDidReceiveMemoryWarning:(UIApplication*)application { [[NSURLCache sharedURLCache] removeAllCachedResponses]; } // Register device token with Bluemix Push Notification Service - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ [[CDVMFPPush sharedInstance] didRegisterForRemoteNotifications:deviceToken]; } // Handle error when failed to register device token with APNs - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { [[CDVMFPPush sharedInstance] didFailToRegisterForRemoteNotifications:error]; } // Handle receiving a remote notification -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [[CDVMFPPush sharedInstance] didReceiveRemoteNotification:userInfo]; } @end

  1. Corrió la muestra en un dispositivo iOS para realmente registrarse y recibir notificaciones Push

Espero no haberme perdido nada: 0)

Me he contactado y he abierto algunos problemas con el equipo de Cordova para mejorar la calidad de esta muestra y facilitar la configuración.

Editar: Además, como se indica en Sebastian a continuación, debe deshabilitar el código de bits.

Estoy tratando de ejecutar la muestra de notificaciones Push disponible en GitHub . Desafortunadamente, la configuración que se describe aquí no funciona.

Los documentos dicen: en la parte superior de su AppDelegate.m :

#import "[your-project-name]-Swift.h"

Si el nombre de su proyecto tiene espacios o guiones, reemplácelos con guiones bajos en la instrucción de importación.

Ejemplo:

// Project name is "Test Project" or "Test-Project" #import "Test_Project-Swift.h"

Así que lo hice por la muestra:

#import "bms_samples_cordova_push-Swift.h"

ObjC Bridging Header está configurado para:

bms-samples-cordova-push/Plugins/ibm-mfp-core/Bridging-Header.h

Runpath está configurado a:

@executable_path/Frameworks

Pero Xcode arroja el error anterior. ¿Que estoy haciendo mal?