Vai al contenuto

Problema con apns / Notifiche Push


Messaggi raccomandati

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

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...