2014-11-03 186 views
1

您能否幫助我檢查配置過程中是否錯過任何內容,因爲一旦應用程序死亡後我無法收到通知。如果應用程序只是最小化,將顯示通話的通知,但對於即時消息,手機只會以流行音振動,但不會顯示通知。 使用C2Call如何在AppDelegate子類中調用下面的方法。C2Call推送通知

[super application:didRegisterForRemoteNotificationsWithDeviceToken]; 



- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 
    //[self registerDeviceToken:devToken]; 
    // Get Bundle Info for Remote Registration (handy if you have more than one app) 
    NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; 
    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 

    // Check what Notifications the user has turned on. We registered for all three, but they may have manually disabled some or all of them. 
    // 

    NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 


    // Set the defaults to disabled unless we find otherwise... 

    NSString *pushBadge = @"disabled"; 
    NSString *pushAlert = @"disabled"; 
    NSString *pushSound = @"disabled"; 

    if(rntypes == UIRemoteNotificationTypeBadge){ 
     pushBadge = @"enabled"; 
    } 
    else if(rntypes == UIRemoteNotificationTypeAlert){ 
     pushAlert = @"enabled"; 
    } 
    else if(rntypes == UIRemoteNotificationTypeSound){ 
     pushSound = @"enabled"; 
    } 
    else if(rntypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)){   pushBadge = @"enabled"; 
     pushAlert = @"enabled"; 
    } 
    else if(rntypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)){   pushBadge = @"enabled"; 
     pushSound = @"enabled"; 
    } 
    else if(rntypes == (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)){   pushAlert = @"enabled"; 
     pushSound = @"enabled"; 
    } 
    else if(rntypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)){ 
     pushBadge = @"enabled"; 
     pushAlert = @"enabled"; 
     pushSound = @"enabled"; 
    } 

    // Get the users Device Model, Display Name, Unique ID, Token & Version Number 
    UIDevice *dev = [UIDevice currentDevice]; 
    // NSString *deviceUuid=dev.uniqueIdentifier; 
    NSString *deviceUuid = [[dev identifierForVendor] UUIDString]; 
    NSString *deviceName = dev.name; 
    NSString *deviceModel = dev.model; 
    NSString *deviceSystemVersion = dev.systemVersion; 

    //Prepare the Device Token for Registration (remove spaces and < >) 
    NSString *deviceToken = [[[[devToken description] stringByReplacingOccurrencesOfString:@"<"withString:@""]        stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString: @" " withString: @""]; 
    NSString *urlString = [@"/pushservice/apns/user/register"stringByAppendingString:@"r=user/register"]; 
    NSLog(@"devicetoken length: %i", [deviceToken length]); 
    urlString = [urlString stringByAppendingString:@"&appname="]; 
    urlString = [urlString stringByAppendingString:appName]; 
    urlString = [urlString stringByAppendingString:@"&appversion="]; 
    urlString = [urlString stringByAppendingString:appVersion]; 
    urlString = [urlString stringByAppendingString:@"&deviceuid="]; 
    urlString = [urlString stringByAppendingString:deviceUuid]; 
    urlString = [urlString stringByAppendingString:@"&devicetoken="]; 
    urlString = [urlString stringByAppendingString:deviceToken]; 
    urlString = [urlString stringByAppendingString:@"&devicename="]; 
    urlString = [urlString stringByAppendingString:deviceName]; 
    urlString = [urlString stringByAppendingString:@"&devicemodel="]; 
    urlString = [urlString stringByAppendingString:deviceModel]; 
    urlString = [urlString stringByAppendingString:@"&deviceversion="]; 
    urlString = [urlString stringByAppendingString:deviceSystemVersion]; 
    urlString = [urlString stringByAppendingString:@"&pushbadge="]; 
    urlString = [urlString stringByAppendingString:pushBadge]; 
    urlString = [urlString stringByAppendingString:@"&pushalert="]; 
    urlString = [urlString stringByAppendingString:pushAlert]; 
    urlString = [urlString stringByAppendingString:@"&pushsound="]; 
    urlString = [urlString stringByAppendingString:pushSound]; 

    NSUserDefaults *def=[NSUserDefaults standardUserDefaults]; 
    [def setObject:deviceToken forKey:@"token"]; 
    [def synchronize]; 
    //[super application:didRegisterForRemoteNotificationsWithDeviceToken]; 

} 

回答

0
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 

    [super application:didRegisterForRemoteNotificationsWithDeviceToken]; 

    //[self registerDeviceToken:devToken]; 

    // Get Bundle Info for Remote Registration (handy if you have more than one app) 

    NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; 

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 

    // Check what Notifications the user has turned on. We registered for all three, but they may have manually disabled some or all of them. 
// 

    NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 


    // Set the defaults to disabled unless we find otherwise... 

    NSString *pushBadge = @"disabled"; 
NSString *pushAlert = @"disabled"; 
NSString *pushSound = @"disabled"; 

if(rntypes == UIRemoteNotificationTypeBadge){ 
    pushBadge = @"enabled"; 
} 
else if(rntypes == UIRemoteNotificationTypeAlert){ 
    pushAlert = @"enabled"; 
} 
else if(rntypes == UIRemoteNotificationTypeSound){ 
    pushSound = @"enabled"; 
} 
else if(rntypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)){   pushBadge = @"enabled"; 
    pushAlert = @"enabled"; 
} 
else if(rntypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)){   pushBadge = @"enabled"; 
    pushSound = @"enabled"; 
} 
else if(rntypes == (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)){   pushAlert = @"enabled"; 
    pushSound = @"enabled"; 
} 
else if(rntypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)){ 
    pushBadge = @"enabled"; 
    pushAlert = @"enabled"; 
    pushSound = @"enabled"; 
} 

// Get the users Device Model, Display Name, Unique ID, Token & Version Number 
UIDevice *dev = [UIDevice currentDevice]; 
// NSString *deviceUuid=dev.uniqueIdentifier; 

NSString *deviceUuid = [[dev identifierForVendor] UUIDString]; 

NSString *deviceName = dev.name; 

NSString *deviceModel = dev.model; 

NSString *deviceSystemVersion = dev.systemVersion; 

//Prepare the Device Token for Registration (remove spaces and < >) 

NSString *deviceToken = [[[[devToken description] stringByReplacingOccurrencesOfString:@"<"withString:@""]        stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString: @" " withString: @""]; 

NSString *urlString = [@"/pushservice/apns/user/register"stringByAppendingString:@"r=user/register"]; 

NSLog(@"devicetoken length: %i", [deviceToken length]); 

urlString = [urlString stringByAppendingString:@"&appname="]; 

urlString = [urlString stringByAppendingString:appName]; 

urlString = [urlString stringByAppendingString:@"&appversion="]; 

urlString = [urlString stringByAppendingString:appVersion]; 

urlString = [urlString stringByAppendingString:@"&deviceuid="]; 

urlString = [urlString stringByAppendingString:deviceUuid]; 

urlString = [urlString stringByAppendingString:@"&devicetoken="]; 

urlString = [urlString stringByAppendingString:deviceToken]; 

urlString = [urlString stringByAppendingString:@"&devicename="]; 

urlString = [urlString stringByAppendingString:deviceName]; 

urlString = [urlString stringByAppendingString:@"&devicemodel="]; 

urlString = [urlString stringByAppendingString:deviceModel]; 

urlString = [urlString stringByAppendingString:@"&deviceversion="]; 

urlString = [urlString stringByAppendingString:deviceSystemVersion]; 

urlString = [urlString stringByAppendingString:@"&pushbadge="]; 

urlString = [urlString stringByAppendingString:pushBadge]; 

urlString = [urlString stringByAppendingString:@"&pushalert="]; 

urlString = [urlString stringByAppendingString:pushAlert]; 

urlString = [urlString stringByAppendingString:@"&pushsound="]; 

urlString = [urlString stringByAppendingString:pushSound]; 

NSUserDefaults *def=[NSUserDefaults standardUserDefaults]; 

[def setObject:deviceToken forKey:@"token"]; 

[def synchronize]; 
} 
+0

錯誤: - undeclare標識符didRegisterForRemoteNotificationsWithDeviceToken – 2014-11-04 06:09:41

0

使用以下代碼: -

  • (無效)應用:(UIApplication的*)應用didRegisterForRemoteNotificationsWithDeviceToken:(NSData的*)DEVTOKEN { // [自registerDeviceToken:DEVTOKEN] ; //獲取遠程註冊的Bundle信息(如果您有多個應用程序,方便) NSString * appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@「CFBundleDisplayName」]; NSString * appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@「CFBundleVersion」];

    //檢查用戶打開了什麼通知。我們註冊了所有三個,但他們可能已手動禁用部分或全部。 //

    NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    //設置默認爲禁用除非我們找到......

    的NSString * pushBadge = @ 「已禁用」; NSString * pushAlert = @「disabled」; NSString * pushSound = @「disabled」;

    if(rntypes == UIRemoteNotificationTypeBadge){ pushBadge = @「enabled」; } else if(rntypes == UIRemoteNotificationTypeAlert){ pushAlert = @「enabled」; } else if(rntypes == UIRemoteNotificationTypeSound){ pushSound = @「enabled」; } else if(rntypes ==(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)){pushBadge = @「enabled」; pushAlert = @「啓用」; } else if(rntypes ==(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)){pushBadge = @「enabled」; pushSound = @「啓用」; } else if(rntypes ==(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)){pushAlert = @「enabled」; pushSound = @「啓用」; (rntypes ==(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)){ pushBadge = @「enabled」; pushAlert = @「啓用」; pushSound = @「啓用」; }

    //獲取用戶設備型號,顯示名稱,唯一ID,令牌&版本號 的UIDevice * dev的= [的UIDevice currentDevice]; // NSString * deviceUuid = dev.uniqueIdentifier; NSString * deviceUuid = [[dev identifierForVendor] UUIDString]; NSString * deviceName = dev.name; NSString * deviceModel = dev.model; NSString * deviceSystemVersion = dev。systemVersion;

    //準備設備令牌用於註冊(刪除空格和<>) 的NSString * deviceToken = [[[[DEVTOKEN描述] stringByReplacingOccurrencesOfString:@ 「< 」withString:@「 」] stringByReplacingOccurrencesOfString:@「>」 withString :@「」] stringByReplacingOccurrencesOfString:@「」withString:@「」]; NSString * urlString = [@「/ pushservice/apns/user/register」stringByAppendingString:@「r = user/register」]; NSLog(@「devicetoken length:%i」,[deviceToken length]); urlString = [urlString stringByAppendingString:@「& appname =」]; urlString = [urlString stringByAppendingString:appName]; urlString = [urlString stringByAppendingString:@「& appversion =」]; urlString = [urlString stringByAppendingString:appVersion]; urlString = [urlString stringByAppendingString:@「& deviceuid =」]; urlString = [urlString stringByAppendingString:deviceUuid]; urlString = [urlString stringByAppendingString:@「& devicetoken =」]; urlString = [urlString stringByAppendingString:deviceToken]; urlString = [urlString stringByAppendingString:@「& devicename =」]; urlString = [urlString stringByAppendingString:deviceName]; urlString = [urlString stringByAppendingString:@「& devicemodel =」]; urlString = [urlString stringByAppendingString:deviceModel]; urlString = [urlString stringByAppendingString:@「& deviceversion =」]; urlString = [urlString stringByAppendingString:deviceSystemVersion]; urlString = [urlString stringByAppendingString:@「& pushbadge =」]; urlString = [urlString stringByAppendingString:pushBadge]; urlString = [urlString stringByAppendingString:@「& pushalert =」]; urlString = [urlString stringByAppendingString:pushAlert]; urlString = [urlString stringByAppendingString:@「& pushsound =」]; urlString = [urlString stringByAppendingString:pushSound]; strGlobalDeviceToken = deviceToken; NSLog(@「deviceToken%@」,strGlobalDeviceToken); NSUserDefaults * def = [NSUserDefaults standardUserDefaults]; [def setObject:deviceToken forKey:@「token」]; [def synchronize];

    [super application:application didRegisterForRemoteNotificationsWithDeviceToken:devToken];

}