- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行 GitHub 上可用的推送通知示例.不幸的是,配置概述here不起作用。
文档说:在您的 AppDelegate.m
顶部:
#import "[your-project-name]-Swift.h"
如果您的项目名称有空格或连字符,请在导入语句中将它们替换为下划线。
例子:
// Project name is "Test Project" or "Test-Project"
#import "Test_Project-Swift.h"
所以我为示例做了:
#import "bms_samples_cordova_push-Swift.h"
ObjC 桥接头设置为:
bms-samples-cordova-push/Plugins/ibm-mfp-core/Bridging-Header.h
运行路径设置为:
@executable_path/Frameworks
但是 Xcode 抛出了上面的错误。我做错了什么?
最佳答案
我能够使用以下步骤运行 bms-samples-cordova-hellopush
示例应用程序:
克隆样本:
git clone https://github.com/ibm-bluemix-mobile-services/bms-samples-cordova-hellopush
在我的 [your-directory]/www/js/index.js
中添加了我的 APPLICATION_ROUTE 和 APPLICATION_GUID(配置后Bluemix 上我的移动服务入门应用程序的推送通知
将 iOS 平台添加到我的应用程序中:
cordova平台添加ios@3.9
添加了 Cordova 插件:
cordova 插件添加 ibm-mfp-push
使用 Xcode 打开我的 [your-app-name].xcodeproj
文件在我的 [your-app-name]/platforms/ios
目录中(当我被提示:Convert to Latest Swift Syntax,我点击了Cancel)
添加了桥接头。转至 Build settings > Swift Compiler - Code Generation > Objective-C Bridging Header
并添加以下路径:
[您的项目名称]/Plugins/ibm-mfp-core/Bridging-Header.h
添加框架参数。转至 Build Settings > Linking > Runpath Search Paths
并添加以下参数:
@executable_path/Frameworks
建成项目
在我的桥接 header 中取消注释以下 Push 导入语句。转到 [your-project-name]/Plugins/ibm-mfp-core/Bridging-Header.h
:
这是我更新的 AppDelegate.m
:
/*
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
希望我没有遗漏任何东西 :0)
我已经与 Cordova 团队联系并解决了一些问题,以提高此示例的质量,使其更易于设置。
编辑:此外,正如下面塞巴斯蒂安所说,您需要禁用位码。
关于ios - 无法运行 bms-samples-cordova-hellopush - 未找到 bms_samples_cordova_push-Swift.h 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240745/
按照 Bluemix 网站上的说明;我安装了 Swift SDK pod use_frameworks! pod 'BMSSecurity' 它在我的终端上显示: 然后,当我构建项目时,出现了 3
我从 here - available online 下载了一个名为 BMS 的显着性模型“Exploiting Surroundedness for Saliency Detection: A Bo
我们正在使用: BMSClient.getInstance().registerAuthenticationListener("realm", new CustomAuthentication(thi
When i launch app then below error print in debug log, i want to find out is it app side issue or de
从这里开始: https://github.com/ibm-bluemix-mobile-services/bms-samples-cordova-hellopush 我从 git 建立了一个新的本地
我正在尝试运行 GitHub 上可用的推送通知示例.不幸的是,配置概述here不起作用。 文档说:在您的 AppDelegate.m 顶部: #import "[your-project-name]-
我是一名优秀的程序员,十分优秀!