Skip to content

Commit

Permalink
Merge branch 'patch' into next
Browse files Browse the repository at this point in the history
* patch:
  [MB-1712] Release 7.0.3
  [MB-1656] added PushNotificationDelegate and handler to obj-c sample.
  [MB-1711] Fix takeOff test
  [MB-1711] Add more specific uaconfig validation logs
  [MB-1603] non-mandatory AirshipResources
  [MB-1656] added PushNotificationDelegate and handler to swift sample.
  [MB-1643] Update custom event error message
  [MB-1638] message center badging
  • Loading branch information
crow committed Mar 30, 2016
2 parents 2b1d151 + a071fc2 commit eb91c64
Show file tree
Hide file tree
Showing 18 changed files with 357 additions and 30 deletions.
2 changes: 0 additions & 2 deletions Airship/Common/NSString+UALocalizationAdditions.m
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ - (NSString *)localizedStringWithTable:(NSString *)table defaultValue:(NSString
// If the string couldn't be found in the main bundle, search AirshipResources
NSBundle *fallbackBundle = [UAirship resources];



NSString *string = [self sanitizedLocalizedStringWithTable:table primaryBundle:primaryBundle fallbackBundle:fallbackBundle];
if (!string) {
if (fallbackLocale) {
Expand Down
2 changes: 1 addition & 1 deletion Airship/Common/UAAddCustomEventAction.m
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ - (void)performWithArguments:(UAActionArguments *)arguments
} else {
NSError *error = [NSError errorWithDomain:UAAddCustomEventActionErrorDomain
code:UAAddCustomEventActionErrorCodeInvalidEventName
userInfo:@{NSLocalizedDescriptionKey:@"Invalid event. Verify event name is not empty and within 255 characters."}];
userInfo:@{NSLocalizedDescriptionKey:@"Invalid custom event. Verify the event name is specified, event value must be a number, and all values must not exceed 255 characters."}];

completionHandler([UAActionResult resultWithError:error]);
}
Expand Down
26 changes: 17 additions & 9 deletions Airship/Common/UAirship.m
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,11 @@ - (instancetype)initWithConifg:(UAConfig *)config dataStore:(UAPreferenceDataSto

// Only create the default message center if running iOS 8 and above
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
self.sharedDefaultMessageCenter = [[UADefaultMessageCenter alloc] init];
if ([UAirship resources]) {
self.sharedDefaultMessageCenter = [[UADefaultMessageCenter alloc] init];
} else {
UA_LINFO(@"Unable to initialize default message center: AirshipResources is missing");
}
}

self.channelCapture = [UAChannelCapture channelCaptureWithConfig:config push:self.sharedPush];
Expand All @@ -149,6 +153,12 @@ - (instancetype)initWithConifg:(UAConfig *)config dataStore:(UAPreferenceDataSto
}

+ (void)takeOff {
if (![[NSBundle mainBundle] pathForResource:@"AirshipConfig" ofType:@"plist"]) {
UA_LIMPERR(@"AirshipConfig.plist file is missing. Unable to takeOff.");
// Bail now. Don't continue the takeOff sequence.
return;
}

[UAirship takeOff:[UAConfig defaultConfig]];
}

Expand All @@ -172,6 +182,7 @@ + (void)takeOff:(UAConfig *)config {
* This is an unsafe version of takeOff - use takeOff: instead for dispatch_once
*/
+ (void)executeUnsafeTakeOff:(UAConfig *)config {

// Airships only take off once!
if (sharedAirship_) {
return;
Expand All @@ -183,15 +194,9 @@ + (void)executeUnsafeTakeOff:(UAConfig *)config {
[UAirship setLoudImpErrorLogging:NO];
}

// Ensure that app credentials have been passed in
// Ensure that app credentials are valid
if (![config validate]) {
UA_LIMPERR(@"The AirshipConfig.plist file is missing and no application credentials were specified at runtime.");
// Bail now. Don't continue the takeOff sequence.
return;
}

if (![self resources]) {
UA_LIMPERR(@"AirshipResources.bundle could not be found. If using the static library, you must add this file to your application's Copy Bundle Resources phase, or use the AirshipKit embedded framework");
UA_LIMPERR(@"The UAConfig is invalid, no application credentials were specified at runtime.");
// Bail now. Don't continue the takeOff sequence.
return;
}
Expand Down Expand Up @@ -405,6 +410,9 @@ + (NSBundle *)resources {
if (resourcesBundleURL) {
resourcesBundle_ = [NSBundle bundleWithURL:resourcesBundleURL];
}
if (!resourcesBundle_) {
UA_LIMPERR(@"AirshipResources.bundle could not be found. If using the static library, you must add this file to your application's Copy Bundle Resources phase, or use the AirshipKit embedded framework");
}
});
return resourcesBundle_;
}
Expand Down
8 changes: 4 additions & 4 deletions AirshipKit/AirshipKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
494DD95D1B0EB677009C134E /* AirshipKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 494DD95C1B0EB677009C134E /* AirshipKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
494DDC261B0FD6A1009C134E /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DDC251B0FD6A1009C134E /* libsqlite3.dylib */; };
494DDC281B0FD6A6009C134E /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DDC271B0FD6A6009C134E /* libz.dylib */; };
49D5281D1B17DFE7006E35FB /* libUAirship-7.0.2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 49D5281C1B17DFE7006E35FB /* libUAirship-7.0.2.a */; };
49D5281D1B17DFE7006E35FB /* libUAirship-7.0.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 49D5281C1B17DFE7006E35FB /* libUAirship-7.0.3.a */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand All @@ -25,7 +25,7 @@
494DD95C1B0EB677009C134E /* AirshipKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AirshipKit.h; sourceTree = "<group>"; };
494DDC251B0FD6A1009C134E /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
494DDC271B0FD6A6009C134E /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
49D5281C1B17DFE7006E35FB /* libUAirship-7.0.2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libUAirship-7.0.2.a"; path = "../Airship/libUAirship-7.0.2.a"; sourceTree = "<group>"; };
49D5281C1B17DFE7006E35FB /* libUAirship-7.0.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libUAirship-7.0.3.a"; path = "../Airship/libUAirship-7.0.3.a"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand All @@ -35,7 +35,7 @@
files = (
494DDC281B0FD6A6009C134E /* libz.dylib in Frameworks */,
494DDC261B0FD6A1009C134E /* libsqlite3.dylib in Frameworks */,
49D5281D1B17DFE7006E35FB /* libUAirship-7.0.2.a in Frameworks */,
49D5281D1B17DFE7006E35FB /* libUAirship-7.0.3.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -46,7 +46,7 @@
isa = PBXGroup;
children = (
492051421C0D176400A7B36D /* AirshipResources.bundle */,
49D5281C1B17DFE7006E35FB /* libUAirship-7.0.2.a */,
49D5281C1B17DFE7006E35FB /* libUAirship-7.0.3.a */,
494DDC271B0FD6A6009C134E /* libz.dylib */,
494DDC251B0FD6A1009C134E /* libsqlite3.dylib */,
494DD9591B0EB677009C134E /* AirshipKit */,
Expand Down
10 changes: 5 additions & 5 deletions AirshipLib/AirshipLib.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
1F4230C016C09876004B52C1 /* libUAirship-7.0.2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BB88612C159A7E9600584445 /* libUAirship-7.0.2.a */; };
1F4230C016C09876004B52C1 /* libUAirship-7.0.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BB88612C159A7E9600584445 /* libUAirship-7.0.3.a */; };
1F4EDB3C1831839A00F77343 /* UAAction+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4995C62217FA3D71004F8724 /* UAAction+Internal.h */; };
1F55FB6D181A34DD002AA192 /* UABeveledLoadingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F55FB6B181A34DD002AA192 /* UABeveledLoadingIndicator.h */; };
1F55FB6F181A34DD002AA192 /* UABeveledLoadingIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F55FB6C181A34DD002AA192 /* UABeveledLoadingIndicator.m */; };
Expand Down Expand Up @@ -667,7 +667,7 @@
BB42FB7D150969F200FC4B1B /* UALocationCommonValues.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UALocationCommonValues.m; sourceTree = "<group>"; };
BB484B2915910C370097B38C /* UALocationTestUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UALocationTestUtils.h; path = ../../TestCommon/LocationTest/UALocationTestUtils.h; sourceTree = "<group>"; };
BB484B2A15910C370097B38C /* UALocationTestUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UALocationTestUtils.m; path = ../../TestCommon/LocationTest/UALocationTestUtils.m; sourceTree = "<group>"; };
BB88612C159A7E9600584445 /* libUAirship-7.0.2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libUAirship-7.0.2.a"; sourceTree = BUILT_PRODUCTS_DIR; };
BB88612C159A7E9600584445 /* libUAirship-7.0.3.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libUAirship-7.0.3.a"; sourceTree = BUILT_PRODUCTS_DIR; };
BB926B3C1540D1D000003975 /* UAAnalytics+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UAAnalytics+Internal.h"; sourceTree = "<group>"; };
BBB87D56150574DE00971CEC /* CLLocationManager+Test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CLLocationManager+Test.h"; sourceTree = "<group>"; };
BBB87D57150574DE00971CEC /* CLLocationManager+Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CLLocationManager+Test.m"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -850,7 +850,7 @@
49C6721E1857CE840088F210 /* JavaScriptCore.framework in Frameworks */,
760D14BA17C2C9E600BBE6E6 /* XCTest.framework in Frameworks */,
CC523FC317BA8AC200233005 /* CoreData.framework in Frameworks */,
1F4230C016C09876004B52C1 /* libUAirship-7.0.2.a in Frameworks */,
1F4230C016C09876004B52C1 /* libUAirship-7.0.3.a in Frameworks */,
BBB87E5115057EEA00971CEC /* libOCMock.a in Frameworks */,
BBB87E4F15057EC400971CEC /* CoreLocation.framework in Frameworks */,
7B909D431429363300D0AB36 /* Security.framework in Frameworks */,
Expand Down Expand Up @@ -881,7 +881,7 @@
isa = PBXGroup;
children = (
7BB679061429288D00B877DB /* AirshipLogicTests.xctest */,
BB88612C159A7E9600584445 /* libUAirship-7.0.2.a */,
BB88612C159A7E9600584445 /* libUAirship-7.0.3.a */,
4920512C1C0D0C0A00A7B36D /* AirshipResources.bundle */,
);
name = Products;
Expand Down Expand Up @@ -1908,7 +1908,7 @@
);
name = AirshipLib;
productName = AirshipLib;
productReference = BB88612C159A7E9600584445 /* libUAirship-7.0.2.a */;
productReference = BB88612C159A7E9600584445 /* libUAirship-7.0.3.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BB8860A7159A7E9600584445"
BuildableName = "libUAirship-7.0.2.a"
BuildableName = "libUAirship-7.0.3.a"
BlueprintName = "AirshipLib"
ReferencedContainer = "container:AirshipLib.xcodeproj">
</BuildableReference>
Expand Down Expand Up @@ -66,7 +66,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BB8860A7159A7E9600584445"
BuildableName = "libUAirship-7.0.2.a"
BuildableName = "libUAirship-7.0.3.a"
BlueprintName = "AirshipLib"
ReferencedContainer = "container:AirshipLib.xcodeproj">
</BuildableReference>
Expand Down
6 changes: 5 additions & 1 deletion AirshipLib/AirshipLogicTests/UAirshipTest.m
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@

#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import <OCMock/OCMock.h>
#import "UAirship.h"
#import "UAConfig.h"

@interface UAirshipTest : XCTestCase
@end
Expand All @@ -20,11 +22,13 @@ - (void)tearDown {
* Test that if takeOff is called on a background thread that an exception is thrown.
*/
- (void)testExceptionForTakeOffOnNotTheMainThread {
__block id config = [OCMockObject niceMockForClass:[UAConfig class]];
[[[config stub] andReturn:@YES] validate];

XCTestExpectation *takeOffCalled = [self expectationWithDescription:@"Takeoff called"];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
XCTAssertThrowsSpecificNamed([UAirship takeOff],
XCTAssertThrowsSpecificNamed([UAirship takeOff:config],
NSException, UAirshipTakeOffBackgroundThreadException,
@"Calling takeOff on a background thread should throw a UAirshipTakeOffBackgroundThreadException");
[takeOffCalled fulfill];
Expand Down
2 changes: 1 addition & 1 deletion AirshipLib/Config.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
CURRENT_PROJECT_VERSION = 7.0.2
CURRENT_PROJECT_VERSION = 7.0.3

RELEASE_OTHER_CFLAGS = -fembed-bitcode

Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@ iOS Changelog

Migration Guide: http://docs.urbanairship.com/topic_guides/ios_migration.html.

Version 7.0.3 - March 30, 2016
=================================
- Added more specific UAConfig validation logging.
- Improved custom Event logging.
- Added PushHandler class and Message Center badging to Samples.
- Improved support for when AirshipResources.bundle is unavailable.

Version 7.0.2 - February 12, 2016
=================================
- Fixed submission problems due to the AirshipResources.bundle containing the CFBundleExecutable key.
Expand Down
6 changes: 6 additions & 0 deletions Sample/Sample.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
493F51051C5B262100B050A1 /* Roboto-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 493F50F81C5B262100B050A1 /* Roboto-ThinItalic.ttf */; };
493F510B1C5B275100B050A1 /* UAPushUI.strings in Resources */ = {isa = PBXBuildFile; fileRef = 493F51091C5B275100B050A1 /* UAPushUI.strings */; };
493F51211C5B3A5100B050A1 /* InboxDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 493F51201C5B3A5100B050A1 /* InboxDelegate.m */; };
61A672FC1CAB3E5A00BAF58A /* PushHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A672FB1CAB3E5A00BAF58A /* PushHandler.m */; };
764693A71C237B630090FE40 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 764693A61C237B630090FE40 /* main.m */; };
764693AA1C237B630090FE40 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 764693A91C237B630090FE40 /* AppDelegate.m */; };
764693AD1C237B630090FE40 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 764693AC1C237B630090FE40 /* HomeViewController.m */; };
Expand Down Expand Up @@ -101,6 +102,8 @@
493F510A1C5B275100B050A1 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/UAPushUI.strings; sourceTree = "<group>"; };
493F511F1C5B3A5100B050A1 /* InboxDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InboxDelegate.h; sourceTree = "<group>"; };
493F51201C5B3A5100B050A1 /* InboxDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InboxDelegate.m; sourceTree = "<group>"; };
61A672FA1CAB3E5A00BAF58A /* PushHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PushHandler.h; sourceTree = "<group>"; };
61A672FB1CAB3E5A00BAF58A /* PushHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushHandler.m; sourceTree = "<group>"; };
764693A21C237B630090FE40 /* Sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sample.app; sourceTree = BUILT_PRODUCTS_DIR; };
764693A61C237B630090FE40 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
764693A81C237B630090FE40 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -205,6 +208,8 @@
children = (
764693A81C237B630090FE40 /* AppDelegate.h */,
764693A91C237B630090FE40 /* AppDelegate.m */,
61A672FA1CAB3E5A00BAF58A /* PushHandler.h */,
61A672FB1CAB3E5A00BAF58A /* PushHandler.m */,
764693AB1C237B630090FE40 /* HomeViewController.h */,
764693AC1C237B630090FE40 /* HomeViewController.m */,
764693AE1C237B630090FE40 /* PushSettingsViewController.h */,
Expand Down Expand Up @@ -406,6 +411,7 @@
files = (
764693B01C237B630090FE40 /* PushSettingsViewController.m in Sources */,
764693AA1C237B630090FE40 /* AppDelegate.m in Sources */,
61A672FC1CAB3E5A00BAF58A /* PushHandler.m in Sources */,
764693F71C238A5E0090FE40 /* TagsTableViewController.m in Sources */,
764693F11C2389D50090FE40 /* AddAliasTableViewController.m in Sources */,
764693AD1C237B630090FE40 /* HomeViewController.m in Sources */,
Expand Down
23 changes: 23 additions & 0 deletions Sample/Sample/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,14 @@
#import <AirshipKit/AirshipKit.h>
#import "AppDelegate.h"
#import "InboxDelegate.h"
#import "PushHandler.h"

#define kSimulatorWarningDisabledKey @"ua-simulator-warning-disabled"

@interface AppDelegate ()
@property(nonatomic, strong) InboxDelegate *inboxDelegate;
@property(nonatomic, strong) PushHandler *pushHandler;

@end

@implementation AppDelegate
Expand Down Expand Up @@ -75,16 +78,32 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
self.inboxDelegate = [[InboxDelegate alloc] initWithRootViewController:self.window.rootViewController];
[UAirship inbox].delegate = self.inboxDelegate;

self.pushHandler = [[PushHandler alloc] init];
[UAirship push].pushNotificationDelegate = self.pushHandler;

// User notifications will not be enabled until userPushNotificationsEnabled is
// set YES on UAPush. Once enabled, the setting will be persisted and the user
// will be prompted to allow notifications. You should wait for a more appropriate
// time to enable push to increase the likelihood that the user will accept
// notifications.
// [UAirship push].userPushNotificationsEnabled = YES;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshMessageCenterBadge) name:UAInboxMessageListUpdatedNotification object:nil];

return YES;
}

- (void)refreshMessageCenterBadge {

UITabBarItem *messageCenterTab = [[[(UITabBarController *)self.window.rootViewController tabBar] items] objectAtIndex:2];

if ([UAirship inbox].messageList.unreadCount > 0) {
[messageCenterTab setBadgeValue:[NSString stringWithFormat:@"%ld", (long)[UAirship inbox].messageList.unreadCount]];
} else {
[messageCenterTab setBadgeValue:nil];
}
}

- (void)failIfSimulator {

// If it's not a simulator return early
Expand Down Expand Up @@ -118,6 +137,10 @@ - (void)failIfSimulator {
});
}

-(void)applicationWillEnterForeground:(UIApplication *)application {
[self refreshMessageCenterBadge];
}

- (void)registrationSucceededForChannelID:(NSString *)channelID deviceToken:(nonnull NSString *)deviceToken {

[[NSNotificationCenter defaultCenter] postNotificationName:@"channelIDUpdated" object:self userInfo:nil];
Expand Down
36 changes: 36 additions & 0 deletions Sample/Sample/PushHandler.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
Copyright 2009-2016 Urban Airship Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE URBAN AIRSHIP INC ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL URBAN AIRSHIP INC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#import <Foundation/Foundation.h>

#if __has_include("AirshipKit/AirshipKit.h")
#import <AirshipKit/AirshipKit.h>
#else
#import "AirshipLib.h"
#endif

@interface PushHandler : NSObject <UAPushNotificationDelegate>

@end
Loading

0 comments on commit eb91c64

Please sign in to comment.