Reputation: 576
I am currently working on a transit web app to be used with San Diego's Metropolitan Transit System. For iOS, I was planning on using a TabBar with three items, [Home] [Favorites] [Notifications]. [Home] leads to the main page (and to any other pages), [Favorites] is where you can setup your favorite bus/trolley stops.
I was planning on having [Favorites] be where you can setup a notification to be sent to you before a bus arrives at the scheduled times provided by MTS. So for example, if a bus were to come at 10:30 and you set a notification to arrive 5 minutes before to alert you, you would get one at 10:25.
I was wanting to link the accounts with the device tokens, and I read some of the questions on here such as Linking user account to device token for push notifications.
I believe it is possible to somehow link the accounts by sending the device token to the UIWebView when I login.
Hope someone can help me.
EDIT:
Below is the Obj-C code in Home.m
#import "Home.h"
@implementation HomeViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *URL1 = [NSURL URLWithString:@"url"];
NSURLRequest *Request1 = [NSURLRequest requestWithURL:URL1];
[webView1 loadRequest:Request1];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"1");
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
NSString *deviceToken = [defaults objectForKey:@"deviceToken"];
bool tokenIsSent = [defaults boolForKey:@"tokenIsSent"];
NSString *newToken = [defaults stringForKey:@"newToken"];
NSLog(@"2");
NSString *urlString = [NSString stringWithFormat:@"url"];
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSData *usernameData;
NSURLResponse *response;
usernameData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil];
NSString *username = [[NSString alloc] initWithData:usernameData encoding:NSUTF8StringEncoding];
NSLog(@"3");
if (deviceToken != nil && tokenIsSent == NO) {
NSLog(@"4");
NSString *urlString = [NSString stringWithFormat:@"url/s=%@&u=%@",newToken, username];
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSData *urlData;
NSURLResponse *response;
urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil];
NSString *info = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
if([info isEqual: @"success"]){
[defaults setBool:YES forKey:@"tokenIsSent"];
NSLog(@"5");
}else{
[defaults setBool:NO forKey:@"tokenIsSent"];
NSLog(@"6");
}
[defaults synchronize];
} else {
NSLog(@"7");
}
}
Upvotes: 0
Views: 1496
Reputation: 45490
First save the token to the NSUserDefaults
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:deviceToken forKey:@"deviceToken"];
[defaults setBool:NO forKey:@"tokenIsSent"];
[defaults synchronize];
}
Because this is done in appDelegate
, at this point the user is not logged in yet, that's why you need to track using something another value like in the example above tokenIsSent
and set it to NO (false).
Now once the user authenticates, you can then send it to your sever and associated with that user.
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
bool deviceToken = [defaults boolForKey:@"deviceToken"];
bool tokenIsSent = [defaults boolForKey:@"tokenIsSent"];
if (deviceToken != nil && tokenIsSent) {
// it is not null , and it was not sent to PHP so send it
if(success){
[defaults setBool:YES forKey:@"tokenIsSent"];
}else{
[defaults setBool:NO forKey:@"tokenIsSent"];
}
[defaults synchronize];
}
If the delgate is not being called you need to implement it:
@interface HomeViewController : UIViewController<UIWebViewDelegate>
And make sure you assign that delegate.
- (void)viewDidLoad
{
[super viewDidLoad];
//Assign the delegate to WebView1
WebView1.delegate = self
//Perform the request
NSURL *URL1 = [NSURL URLWithString:@"http://clovercloud.net/app/f/"];
NSURLRequest *Request1 = [NSURLRequest requestWithURL:URL1];
[webView1 loadRequest:Request1];
}
Upvotes: 2
Reputation: 393811
You can store the device token in NSUserDefaults
. Then you can access it from where ever you need it within your iOS app. Therefore you can pass is to the UIWebView
when you login and link the logged in user with the device token.
Upvotes: 0
Reputation: 624
The registration for push notification is done through a native app and can only be performed through a native app. For more details see answer:
How can a web application send push notifications to iOS devices?
Push notification is not associated with some kind of View.
Upvotes: 0