2012-07-07 2 views
3

J'utilise le service de notification Apple, donc dans cette fonction dois-je enregistrer chaque appareil jeton qui télécharge mon application ou en d'autres termes quand je veux envoyer la notification, à quelle adresse je dois l'envoyer.dois-je enregistrer chaque appareil jeton téléchargeant mon application?

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{ 

NSString *str = [NSString stringWithFormat:@"Error: %@",[error localizedDescription]]; 
NSLog(@"%@",str);} 

Répondre

3

Si vous ne souhaitez pas utiliser un service tel que Urban Airship. Vous créez une base de données (probablement MySQL) puis utilisez un langage tel que PHP pour créer un fichier qui vous permettrait de POSTER le jeton de périphérique et de le mettre dans la base de données.

En PHP cela ressemblerait

<?php 
$connection = mysql_connect("localhost","username","password"); 
if (!$connection){ 
    die('Error: ' . mysql_error()); 
} 

mysql_select_db("my_database", $connection); 

mysql_query("INSERT INTO tokens (token) 
VALUES ('$_POST[token]')"); 

mysql_close($connection); 
?> 

Sur le côté iOS que vous utilisez le code suivant:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSString *urlString; 
    NSURL *url; 
    NSMutableURLRequest *request; 
    NSString *postString; 

    urlString = @"http://yoururl.com/apns/registerDevice"; 
    url = [NSURL URLWithString:urlString]; 
    request = [NSMutableURLRequest requestWithURL:url]; 
    postString = [NSString stringWithFormat:@"token=%@", [[NSString alloc] initWithData:deviceToken encoding:NSUTF8StringEncoding];]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:[NSString stringWithFormat:@"%d", [postString length]] forHTTPHeaderField:@"Content-length"]; 
    [request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 

    (void)[[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    //Casting this to void makes the warning of unused expression go away. 
} 
+1

S'IL VOUS PLAÎT assurez-vous que vous désinfectez vos entrées avant de les insérer dans la base de données! – hypercrypt

2

Oui, vous devriez obtenir tous les jetons de l'appareil, si vous voulez garder les choses simples, je vous suggère fortement d'utiliser Urban Airship pour vos notifications push.

+0

est-il gratuit s'il vous plaît? et comment sauvegarder chaque jeton de périphérique? –

+1

Il existe un plan de base gratuit. Ils gardent les jetons de l'appareil dans leur propre base de données. Comme je l'ai dit c'est bien si vous voulez le garder simple, sinon vous pouvez implémenter votre propre base de données et envoyer le notif push. Toi même. – Lefteris

0

Il est probablement un peu tard, mais attention, JAMAIS mettre un

$_POST['ivar'] 

dans une chaîne de requête SQL, c'est la meilleure façon de g et en contact avec SQL Injection! S'il vous plaît utiliser préparer la requête

Questions connexes