mirror of
https://github.com/purplecabbage/phonegap-plugins.git
synced 2026-04-24 03:00:11 -04:00
160 lines
5.6 KiB
Objective-C
160 lines
5.6 KiB
Objective-C
/*
|
|
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
|
|
// PushNotCDV160
|
|
//
|
|
// Created by Randy McMillan on 4/19/12.
|
|
// Copyright OpenOSX.org 2012. All rights reserved.
|
|
//
|
|
|
|
#import "AppDelegate.h"
|
|
#import "MainViewController.h"
|
|
|
|
#ifdef CORDOVA_FRAMEWORK
|
|
#import <Cordova/CDVPlugin.h>
|
|
#import <Cordova/CDVURLProtocol.h>
|
|
#else
|
|
#import "CDVPlugin.h"
|
|
#import "CDVURLProtocol.h"
|
|
#endif
|
|
|
|
|
|
|
|
/***************************************************************************************************
|
|
* URBAN AIRSHIP INTEGRATION
|
|
*
|
|
* 1) Fill in your app key and secret below
|
|
* 2) Include PushNotification.js in your WWW folder (check the comments for usage)
|
|
* 3) Add PushNotification.h/m in the Plugins folder
|
|
* 4) Add key "pushnotification" and value "PushNotification" (case-sensitive) to the plugins
|
|
* list in Cordova.plist
|
|
* 5) Include the sample index.html or just the parts you want
|
|
*
|
|
**************************************************************************************************/
|
|
#define UA_HOST @"https://go.urbanairship.com/"
|
|
#define UA_KEY @"Your App Key"
|
|
#define UA_SECRET @"Your App Secret"
|
|
|
|
|
|
@implementation AppDelegate
|
|
|
|
@synthesize window, viewController;
|
|
@synthesize invokeString;
|
|
@synthesize launchNotification;
|
|
|
|
- (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];
|
|
|
|
[CDVURLProtocol registerURLProtocol];
|
|
|
|
return [super init];
|
|
}
|
|
|
|
#pragma 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
|
|
{
|
|
NSURL* url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
|
|
//NSString* invokeString = nil;
|
|
|
|
if (url && [url isKindOfClass:[NSURL class]]) {
|
|
invokeString = [url absoluteString];
|
|
NSLog(@"PushNotCDV160 launchOptions = %@", url);
|
|
}
|
|
|
|
CGRect screenBounds = [[UIScreen mainScreen] bounds];
|
|
self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
|
|
self.window.autoresizesSubviews = YES;
|
|
|
|
CGRect viewBounds = [[UIScreen mainScreen] applicationFrame];
|
|
|
|
self.viewController = [[[MainViewController alloc] init] autorelease];
|
|
self.viewController.useSplashScreen = YES;
|
|
self.viewController.wwwFolderName = @"www";
|
|
self.viewController.startPage = @"index.html";
|
|
self.viewController.invokeString = invokeString;
|
|
self.viewController.view.frame = viewBounds;
|
|
|
|
// check whether the current orientation is supported: if it is, keep it, rather than forcing a rotation
|
|
BOOL forceStartupRotation = YES;
|
|
UIDeviceOrientation curDevOrientation = [[UIDevice currentDevice] orientation];
|
|
|
|
if (UIDeviceOrientationUnknown == curDevOrientation) {
|
|
// UIDevice isn't firing orientation notifications yet… go look at the status bar
|
|
curDevOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation];
|
|
}
|
|
|
|
if (UIDeviceOrientationIsValidInterfaceOrientation(curDevOrientation)) {
|
|
for (NSNumber *orient in self.viewController.supportedOrientations) {
|
|
if ([orient intValue] == curDevOrientation) {
|
|
forceStartupRotation = NO;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (forceStartupRotation) {
|
|
NSLog(@"supportedOrientations: %@", self.viewController.supportedOrientations);
|
|
// The first item in the supportedOrientations array is the start orientation (guaranteed to be at least Portrait)
|
|
UIInterfaceOrientation newOrient = [[self.viewController.supportedOrientations objectAtIndex:0] intValue];
|
|
NSLog(@"AppDelegate forcing status bar to: %d from: %d", newOrient, curDevOrientation);
|
|
[[UIApplication sharedApplication] setStatusBarOrientation:newOrient];
|
|
}
|
|
|
|
[self.window addSubview:self.viewController.view];
|
|
[self.window makeKeyAndVisible];
|
|
|
|
return YES;
|
|
}
|
|
|
|
// this happens while we are running ( in the background, or from within our own app )
|
|
// only valid if PushNotCDV160-Info.plist specifies a protocol to handle
|
|
- (BOOL) application:(UIApplication*)application handleOpenURL:(NSURL*)url
|
|
{
|
|
if (!url) {
|
|
return NO;
|
|
}
|
|
|
|
// calls into javascript global function 'handleOpenURL'
|
|
NSString* jsString = [NSString stringWithFormat:@"handleOpenURL(\"%@\");", url];
|
|
[self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];
|
|
|
|
// all plugins will get the notification, and their handlers will be called
|
|
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]];
|
|
|
|
return YES;
|
|
}
|
|
|
|
- (void) dealloc
|
|
{
|
|
[super dealloc];
|
|
}
|
|
|
|
@end
|