2014-02-21 134 views
0

运行视图控制器代码之前,我有这个代码的和平得到设备ID:获取设备ID在IOS

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    NSString *devicetokenRN = [NSString stringWithFormat:@"%@", deviceToken]; 
    devicetokenRN = [devicetokenRN stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    devicetokenRN = [devicetokenRN stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
    devicetokenRN = [devicetokenRN stringByReplacingOccurrencesOfString:@">" withString:@""]; 


    // send device token for APNS without spaces or <> 
    DeviceID *DeviceIdentifier = [[DeviceID alloc ] init]; 
    // sending it to the Device.h 
    [DeviceIdentifier setDeviceID:devicetokenRN]; 
} 

我需要检索此的DeviceID作为我的ViewController的第一件事。由于它运行的视图控制器之前,因为如果我在ViewController中使用的NSLog它是NULL,因为它并没有执行这个第一它没有做这个功能。在运行UITableView之前,我需要先获得一些像这样的变量。任何想法将是非常感谢。

+0

的registerForRemoteNotificationTypes方法执行fromdidFinishLaunchingWithOptions,这是我可以,谢谢运行它最早的地方。 – user3328028

回答

0

在AppDelegate中获得整个项目的任何地方,你可以保存在NSUserDefaults的的deviceToken值像

把这些线didRegisterForRemoteNotificationsWithDeviceToken方法在这样

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

{ 

    [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"DeviceToken"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

} 

ppdelegate.m也把下面这行代码在你看来Controller.m或者在viewDidLoad方法

和检索值。

[[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"]; 
0

您可以获取和存储您的DEVICEIDNSUserDefaults

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    NSUUID *identifierForVendor = [[UIDevice currentDevice] identifierForVendor]; 
    NSString *deviceId = [identifierForVendor UUIDString]; 
    NSUserDefaults *userRegistrarionDetails = [NSUserDefaults standardUserDefaults]; 
    [userRegistrarionDetails setObject:deviceId forKey:@"deviceID"]; 
    [userRegistrarionDetails synchronize]; 
} 

,您可以通过

NSUserDefaults *userRegistrarionDetails = [NSUserDefaults standardUserDefaults]; 
NSString * deviceId = [userRegistrarionDetails objectForKey:@"deviceID"]; 
NSLog(@"%@", deviceId); 
+0

这是否意味着其将在视图控制器直接的方式吗? – user3328028

+0

的identifierForVendor是不是你需要发送推送通知到手机的识别码... –