如何将 deviceToken 字符串传递给“webViewDidFinishLoad”?
Posted
技术标签:
【中文标题】如何将 deviceToken 字符串传递给“webViewDidFinishLoad”?【英文标题】:How can I pass the deviceToken string to 'webViewDidFinishLoad'? 【发布时间】:2014-03-22 09:17:43 【问题描述】:如何在 Objective C 中将数据从一个类发送到另一个类?或者也许我如何将字符串存储到全局变量中?我主要是一名 javascript 开发人员,但被困在这方面。我不记得有足够的 Obj C 来编写自己的纸板箱代码。
我向我的 PhoneGap 应用程序添加了推送通知,但我无法将令牌字符串传递给 web 视图。我正在使用 Meteor,所以我在 web 视图中调用 Session.set('token', 'abc');
来存储它。当我尝试从didRegisterForRemoteNotificationsWithDeviceToken
注入它时,它会在 html 页面完成加载之前触发。任何帮助都非常感谢。
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
NSLog(@"My token is: %@", deviceToken);
// would like to do:
globalToken = deviceToken;
.
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
// Black base color for background matches the native apps
theWebView.backgroundColor = [UIColor blackColor];
// inject token
NSString* jsString = [NSString stringWithFormat:@"setTimeout(function() Session.set('push:ios', '%@'); , 7000);", globalToken];
[theWebView stringByEvaluatingJavaScriptFromString:jsString];
return [super webViewDidFinishLoad:theWebView];
【问题讨论】:
【参考方案1】:让我们如下分配你的 globalToken
在AppDelegate.h
@property (nonatomic, retain) NSString * globalToken;
在AppDelegate.m
@synthesize globalToken = _globalToken;
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
NSLog(@"My token is: %@", deviceToken);
// would like to do:
_globalToken = deviceToken;
在您的webViewDidFinishLoad
中
#import "AppDelegate.h"
-(void)webViewDidFinishLoad:(UIWebView*)theWebView
AppDelegate * appDel = (AppDelegate *) [[UIApplication sharedApplication] delegate];
NSLog(@"appDel.globalToken :%@", appDel.globalToken);
谢谢!
【讨论】:
谢谢!我不得不将属性更改为 NSData 但它正在工作!以上是关于如何将 deviceToken 字符串传递给“webViewDidFinishLoad”?的主要内容,如果未能解决你的问题,请参考以下文章