Xcode Phonegap应用程序与城市飞艇问题
我正在尝试将推送通知集成到我的iOS应用程序中。这是一个Phonegap/Cordova项目。没有APN和城市飞艇,一切正常 到现在为止我做了什么?我成功了,我可以从UA向我的手机发送推送消息,但这是通过不同论坛的示例代码完成的,而不是UA文档。所以我开始像UA的文档中显示的那样做。我对此感到非常困惑,并尝试了很多 所以我做了以下工作:从UA获取推送示例并将代码复制到AppDelegate.m,现在看起来是这样的:Xcode Phonegap应用程序与城市飞艇问题,xcode,cordova,apple-push-notifications,urbanairship.com,Xcode,Cordova,Apple Push Notifications,Urbanairship.com,我正在尝试将推送通知集成到我的iOS应用程序中。这是一个Phonegap/Cordova项目。没有APN和城市飞艇,一切正常 到现在为止我做了什么?我成功了,我可以从UA向我的手机发送推送消息,但这是通过不同论坛的示例代码完成的,而不是UA文档。所以我开始像UA的文档中显示的那样做。我对此感到非常困惑,并尝试了很多 所以我做了以下工作:从UA获取推送示例并将代码复制到AppDelegate.m,现在看起来是这样的: // Create Airship singleton that's used
// Create Airship singleton that's used to talk to Urban Airhship servers.
// Please populate AirshipConfig.plist with your info from http://go.urbanairship.com
[UAirship takeOff:takeOffOptions];
[[UAPush shared] resetBadge];//zero badge on startup
[[UAPush shared] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert)];
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
UALOG(@"Application did become active.");
[[UAPush shared] resetBadge]; //zero badge when resuming from background (iOS 4+)
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
UALOG(@"APN device token: %@", deviceToken);
// Updates the device token and registers the token with UA
[[UAPush shared] registerDeviceToken:deviceToken];
/*
* Some example cases where user notification may be warranted
*
* This code will alert users who try to enable notifications
* from the settings screen, but cannot do so because
* notications are disabled in some capacity through the settings
* app.
*
*/
/*
//Do something when notifications are disabled altogther
if ([application enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {
UALOG(@"iOS Registered a device token, but nothing is enabled!");
//only alert if this is the first registration, or if push has just been
//re-enabled
if ([UAirship shared].deviceToken != nil) { //already been set this session
NSString* okStr = @"OK";
NSString* errorMessage =
@"Unable to turn on notifications. Use the \"Settings\" app to enable notifications.";
NSString *errorTitle = @"Error";
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:errorTitle
message:errorMessage
delegate:nil
cancelButtonTitle:okStr
otherButtonTitles:nil];
[someError show];
[someError release];
}
//Do something when some notification types are disabled
} else if ([application enabledRemoteNotificationTypes] != [UAPush shared].notificationTypes) {
UALOG(@"Failed to register a device token with the requested services. Your notifications may be turned off.");
//only alert if this is the first registration, or if push has just been
//re-enabled
if ([UAirship shared].deviceToken != nil) { //already been set this session
UIRemoteNotificationType disabledTypes = [application enabledRemoteNotificationTypes] ^ [UAPush shared].notificationTypes;
NSString* okStr = @"OK";
NSString* errorMessage = [NSString stringWithFormat:@"Unable to turn on %@. Use the \"Settings\" app to enable these notifications.", [UAPush pushTypeString:disabledTypes]];
NSString *errorTitle = @"Error";
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:errorTitle
message:errorMessage
delegate:nil
cancelButtonTitle:okStr
otherButtonTitles:nil];
[someError show];
[someError release];
}
}
*/
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *) error {
UALOG(@"Failed To Register For Remote Notifications With Error: %@", error);
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UALOG(@"Received remote notification: %@", userInfo);
// Get application state for iOS4.x+ devices, otherwise assume active
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)]) {
appState = application.applicationState;
}
[[UAPush shared] handleNotification:userInfo applicationState:appState];
[[UAPush shared] resetBadge]; // zero badge after push received
}
- (void)applicationWillTerminate:(UIApplication *)application {
[UAirship land];
}
它和以前一样,但是UA提供的。然后,我将Push示例中其他源文件夹中的文件复制到phonegap文件夹支持的文件中,包括AirshipConfig.plist。此外,我还将构建设置中的标题搜索路径设置为Airship文件夹,这是我之前复制到xCode项目文件夹中的内容
现在我在AppDeledate.m文件中得到错误(6)“使用未声明的标识符‘UAPush’”。我现在能做什么
感谢您的帮助……看看Xtify推送服务,PhoneGap插件完全受支持: iOS: 安卓:
您需要在AppDelegate.m中同时导入UAirship.h和UAPush.h
#import "MainViewController.h"
#import "UAirship.h"
#import "UAPush.h"
这将消除未声明的标识符问题。愚蠢的城市飞艇忘了在他们的文档中写这个我在PhoneGap和UrbanAirship上也遇到了很多问题。当UrbanAirship告诉我即使我从他们的网站上得到了代码,他们也不支持PhoneGap时,我最终放弃了一起使用它们。可以验证这是真的,我不知道他为什么不接受你的答案……帮我省去了很多麻烦,谢谢!注:截止2013年4月12日,文件中仍没有