我目前正在开发一个用于圣地亚哥大都会交通系统的中转网络应用程序。对于iOS,我计划使用一个包含三个项的TabBar,即家庭通知。主页通向主页(和任何其他页面),收藏夹是您可以设置您最喜欢的公共汽车/无轨电车站的地方。
我计划有收藏,在那里,您可以设置一个通知发送给您,在公共汽车到达预定时间提供的MTS。例如,如果一辆公共汽车在10点30分来,而你设置一个通知在5分钟前到达,提醒你,你会在10点25分得到一辆。
我想把帐户和设备令牌联系起来,我在这里读到了一些问题,比如Linking user account to device token for push notifications。
我相信,当我登录时,通过将设备令牌发送到UIWebView,可以以某种方式链接帐户。
希望有人能帮我。
编辑:下面是Home.m中的Obj代码
#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");
}
}发布于 2014-03-24 15:50:07
首先将令牌保存到NSUserDefaults
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:deviceToken forKey:@"deviceToken"];
[defaults setBool:NO forKey:@"tokenIsSent"];
[defaults synchronize];
}因为这是在appDelegate中完成的,此时用户还没有登录,这就是为什么您需要使用类似于上面的tokenIsSent示例中的另一个值来跟踪,并将其设置为NO (false)。
现在,一旦用户进行了身份验证,您就可以将其发送到服务器并与该用户关联。
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];
}如果没有调用delgate,则需要实现它:
@interface HomeViewController : UIViewController<UIWebViewDelegate>确保你指派了那个代表。
- (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];
}发布于 2014-03-24 15:25:11
push通知的注册是通过本地应用程序完成的,并且只能通过本地应用程序执行。如需更多详情,请参阅答案:
How can a web application send push notifications to iOS devices?
推送通知与某种视图无关。
发布于 2014-03-24 15:36:13
您可以将设备令牌存储在NSUserDefaults中。然后你可以在你的iOS应用程序中从任何需要它的地方访问它。因此,当您登录并将登录用户与设备令牌链接时,可以将is传递给UIWebView。
https://stackoverflow.com/questions/22613211
复制相似问题