如何将 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”?的主要内容,如果未能解决你的问题,请参考以下文章

有推送通知问题的登录/注销用户

iOS推送原理

java通知书怎么实现

如何将字符指针传递给函数

如何使用向量将多个字符串传递给函数

如何将字符串从 NSMutableArray 传递给 double