albertonav Inviato 24 Aprile 2015 Segnala Condividi Inviato 24 Aprile 2015 Salve ho implementato le notifiche push nella mia app per ios solo che non riesco a farmi inviare dall'app al mio database mysql il token e vari device id necessari per poi inviare le varie news. Ecco il codice che ho integrato in appdelegate.m //-- Set Notification if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) { // iOS 8 Notifications [application registerUserNotificationSettings:[uIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [application registerForRemoteNotifications]; } else { // iOS < 8 Notifications [application registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; } //--- your custom code return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { #if !TARGET_IPHONE_SIMULATOR // 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"; // Check what Registered Types are turned on. This is a bit tricky since if two are enabled, and one is off, it will return a number 2... not telling you which // one is actually disabled. So we are literally checking to see if rnTypes matches what is turned on, instead of by number. The "tricky" part is that the // single notification types will only match if they are the ONLY one enabled. Likewise, when we are checking for a pair of notifications, it will only be // true if those two notifications are on. This is why the code is written this way 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 = [[[uIDevice currentDevice] 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: @""]; // Build URL String for Registration // !!! CHANGE "www.mywebsite.com" TO YOUR WEBSITE. Leave out the http:// // !!! SAMPLE: "secure.awesomeapp.com" NSString *host = @"xx.xxx.xxx.xx:xxxx"; // !!! CHANGE "/apns.php?" TO THE PATH TO WHERE apns.php IS INSTALLED // !!! ( MUST START WITH / AND END WITH ? ). // !!! SAMPLE: "/path/to/apns.php?" NSString *urlString = [@"/apns/apns.php?"stringByAppendingString:@"task=register"]; 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]; // Register the Device Data // !!! CHANGE "http" TO "https" IF YOU ARE USING HTTPS PROTOCOL NSURL *url = [[NSURL alloc] initWithScheme:@"https" host:host path:urlString]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSLog(@"Register URL: %@", url); NSLog(@"Return Data: %@", returnData); #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 } /** * Remote Notification Received while application was open. */ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { #if !TARGET_IPHONE_SIMULATOR NSLog(@"remote notification: %@",[userInfo description]); NSDictionary *apsInfo = [userInfo objectForKey:@"aps"]; NSString *alert = [apsInfo objectForKey:@"alert"]; NSLog(@"Received Push Alert: %@", alert); NSString *sound = [apsInfo objectForKey:@"sound"]; NSLog(@"Received Push Sound: %@", sound); //AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); NSString *badge = [apsInfo objectForKey:@"badge"]; NSLog(@"Received Push Badge: %@", badge); application.applicationIconBadgeNumber = [[apsInfo objectForKey:@"badge"] integerValue]; #endif } /* * ------------------------------------------------------------------------------------------ * END APNS CODE * ------------------------------------------------------------------------------------------ */ ho letto diverse guide in questi giorni ma non riesco a capire come risolvere questo problema Saluti Alberto Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.