0

最初の でデバイス トークンを呼び出していますviewcontroller。また、デバイス トークンが null であるため、結果を取得できません。以下は私のコードですappdelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge];

    return YES;
}
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    token = [[deviceToken description] stringByTrimmingCharactersInSet:      [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"Device Token ---%@", token);
    [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceToken"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

Viewcontroller で呼び出している場合:

NSString *token=  [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"];

トークンはヌルです。

4

9 に答える 9

4
    NSString *device = [deviceToken description];
    device = [device stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    device = [device stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"My device is: %@", device);

これは私のデバイスで完璧に機能しました。

于 2014-06-27T06:15:31.933 に答える
1

初め

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

これを追加Application.h

于 2015-09-07T02:52:08.347 に答える
0

あなたはこれを試すことができます

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*) deviceToken {
    NSString *pushToken = [deviceToken description];
    pushToken = [pushToken stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    [[NSUserDefaults standardUserDefaults] setObject:pushToken forKey:@"device_token_data"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
于 2013-09-13T13:11:53.447 に答える
0

これを試してみてください私の友人....

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
              #if !TARGET_IPHONE_SIMULATOR

// Prepare the Device Token for Registration (remove spaces and < >)
token = [[[[devToken description]
                        stringByReplacingOccurrencesOfString:@"<"withString:@""]
                       stringByReplacingOccurrencesOfString:@">" withString:@""]
                      stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"%@",token);
[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"deviceToken"];
[[NSUserDefaults standardUserDefaults] synchronize];
        #endif
}
/**
  * Failed to Register for Remote Notifications
 */
  - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    #if !TARGET_IPHONE_SIMULATOR

   NSLog(@"Error in registration. Error: %@", error);
  #endif
  }

ハッピーコーディング!!!!

于 2013-09-13T11:55:59.243 に答える
0

あなたを助けるかもしれません。

最初に通知を登録すると、通知が届きますdidRegisterRemoteNotification

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {   
    self.strdeviceToken=[[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    self.strdeviceToken = [self.strdeviceToken stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    self.strdeviceToken=[self.strdeviceToken stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
}
于 2013-09-13T13:25:55.423 に答える
0

didRegister と didFailToRegister の 2 つのメソッドを追加し、didRegister または didFailedToRegister で呼び出しを受けていることを確認します。

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    NSLog(@"Device Token=> %@",deviceToken);

    //Parse your device toke

}

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
    NSLog(@"Error in registration. Error: %@", error.description);
}

そして、あなたのデバイストークンが正常に取得されていることを確認してください。または、リモートの登録に失敗しました...

于 2013-09-13T12:02:05.190 に答える
0

プロビジョニング プロファイルを確認する必要があります。また、アプリは開発者ポータルでプッシュ通知用に構成する必要があります。そのためには、次の手順を実行します。

  1. 開発者ポータルでアプリケーション識別子のプッシュ通知を有効にします。
  2. プロビジョニング プロファイルを再生成します。
  3. 新しいプロビジョニング プロファイルをダウンロードしてインストールします。
  4. ビルドして実行します。それが動作します。
于 2013-09-18T09:47:20.387 に答える