44 votes

Partage avec l'intégration Facebook native iOS 6.0: "Posté via le nom de mon application"?

Je viens d'intégrer facebook dans mon application via ios 6, mais j'ai un problème lors de la publication sur mon mur. Il dit simplement "poster via l'application ios" . Je veux qu'il soit "posté via le nom de l'application" . J'ai créé une identité d'application avec Facebook et le numéro d'application qu'ils ont attribué, mais je ne sais pas comment l'intégrer à l'intégration de Facebook.

Ci-dessous mon code. Si quelqu'un pouvait aider, ce serait apprécié. Merci!

 {
NSString *message;
message= [[NSString alloc] initWithFormat:@"I've earned %@ points", [self retrieveScore]];

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [controller setInitialText:message];
    [controller addURL:[NSURL URLWithString:@"http://mysite"]];
    [self presentViewController:controller animated:YES completion:Nil];
    [message release];

    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
        NSString *output= nil;
        switch (result) {
            case SLComposeViewControllerResultCancelled:
                output= @"Action Cancelled";
                NSLog (@"cancelled");
                break;
            case SLComposeViewControllerResultDone:
                output= @"Post Succesfull";
                NSLog (@"success");
                break;
            default:
                break;
        }
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        [alert release];
        [controller dismissViewControllerAnimated:YES completion:Nil];
    };
    controller.completionHandler =myBlock;
      }
 

70voto

Daniel Points 14150

Mise à JOUR - il peut être fait

Ainsi, le Digg pour iOS app est en mesure de partager de Facebook sans utiliser le cadre des Comptes pour obtenir les autorisations de l'utilisateur... Ils utilisent UIActivityViewController et ont le post "via Digg", j'ai contacté quelqu'un de Digg et ils m'ont dit que c'est un processus manuel, vous devez disposer de votre application iOS publié dans l'App Store d'Apple et aussi avoir votre Facebook demande acceptée et publiée dans le Facebook App Store. Ensuite, Facebook peut manuellement le processus de liaison entre les deux.

L'inconvénient évident est qu' UIActivityViewController signifie que vous pouvez partager à partir de votre application, sans aucune intégration avec Facebook, pas besoin d'un Facebook app... Mais pour obtenir la "via Votre Nom de l'Application", vous aurez besoin d'un Facebook app que Facebook va approuver dans leur propre app store, une fois que tout est en direct, vous aurez besoin de contacter des relations avec les développeurs pour lier le tout.

Notez que le reste de ma réponse (à ma précédente réponse) est correct, la solution est un processus manuel que Facebook peut faire pour vous, votre iOS code ne devraient pas être affectées.


Précédente Réponse et une solution de contournement

Le natif Facebook de l'intégration que vous voulez est en fait le compositeur-vue-contrôleur. Ceci est obtenu en utilisant l' SLComposeViewController de la classe avec le type de service SLServiceTypeFacebook.

Cette classe fournit seulement un moyen de communication et comme vous remarquez, vous êtes le seul de toute confirmation de messages sur le mur en appuyant sur le bouton Post. Ce point de vue contrôleur est détenue par le système iOS, pas votre application. Et en interagissant avec ce composer view controller vous sont effectivement en contournant votre application.

Les utilisateurs aiment le faire, car il leur donne de la sécurité.

À moins que votre application fonctionne uniquement par une plus profonde, dans les deux sens de Facebook d'intégration, vous devez utiliser l' SLComposeViewController (approfondissement de l'intégration au sens de votre application a besoin de votre liste d'amis ou existantes messages sur le mur, albums etc...).

Pour un poste originaires de votre application sur Facebook avec le "via xxxx" et non pas "via iOS", vous avez besoin d'interagir avec Facebook via l' SLRequest classe. Pour ce faire, vous devez également interagir avec l' Account.framework de plus de Social.framework.

Elle ressemble à la précédente Facebook SDK iOS précédemment utilisé (et peut toujours utiliser) en termes de définition, vous obtenez une référence pour les Comptes de stocker de l'appareil, vous demande de Facebook comptes et envoyer votre Facebook app ID et un tableau des autorisations.

Si elle est accordée, vous pouvez interagir avec le Facebook Graph API via l' SLRequest classe. En publiant sur votre mur, dans ce manoir, vous aurez le choix "via xxx".

Pour utiliser cette s'il vous plaît consulter la documentation pour SLRequest.

Veuillez noter que vous êtes responsable pour la création de votre propre composent de vue dans ce cas.

Vous pouvez bien sûr inspirez-vous de la native de l'INTERFACE utilisateur, consultez également l'iPhoto pour iOS, essayez de partage pour Facebook avec cette application, vous remarquerez qu'il demande l'autorisation d'interagir avec votre Facebook compte (quelque chose qui ne se produit pas lors de l'utilisation d' SLComposeViewController), il présente quelque chose de très proche de l' SLComposeViewController pour Facebook post de la composition.

Mais si vous regardez de plus près, vous remarquerez qu'il n'est pas le même. Il en va de même pour Twitter et leur application native vs intégration native. Ils ont leur propre composer de vue, c'est vraiment intéressant de noter qu'ils utilisent le natif iOS intégration (la Pomme de cadres). Nous le savons parce que d'aller dans Paramètres > Confidentialité > Twitter, vous pouvez voir l'application Twitter est autorisé application en utilisant le compte Twitter(s) sur l'appareil.

En va de même pour Facebook.

Si vous n'avez pas la permission alors vous n'avez aucun moyen de la publication de votre application - aka "via myApp".

Désolé de vous décevoir, j'ai eu également été à la recherche d'un moyen d'intégrer un ACAccount dans la SLComposeViewController , mais ne pouvait pas trouver le chemin. Ce qui est dommage... parce que le natif de l'INTERFACE utilisateur est doux.

13voto

docchang Points 682

J'ai fini par utiliser un custom Facebook-cadre avec le nouveau Facebook SDK 3.1. Facebook Composer Vue

L'original est ici: facebook composer de la vue. J'ai juste corrigé quelques petits avertissements et mises à jour avec le nouveau FB SDK 3.1.

Utilisation:

DEFacebookComposeViewControllerCompletionHandler __block completionHandler = ^(DEFacebookComposeViewControllerResult result) {
    [self dismissViewControllerAnimated:YES completion:nil];
    switch (result) {
        case DEFacebookComposeViewControllerResultCancelled:
            NSLog(@"Facebook Result: Cancelled");
            break;
        case DEFacebookComposeViewControllerResultDone:
            NSLog(@"Facebook Result: Sent");
            break;
    }
};
DEFacebookComposeViewController * compose = [[DEFacebookComposeViewController alloc] init];
[compose setInitialText:self.shareText];
[compose addImage:self.shareImage];
[compose addURL:self.shareURL];
[compose setCompletionHandler:completionHandler];
[self presentViewController:compose animated:YES completion:^{}];

Programme d'installation:

  1. Ouvrez le projet et de faire une nouvelle version.
  2. Allez dans le dossier $PROJECT_FOLDER\build\Debug-iphonesimulator et faites-le glisser à la fois l' FBComposeView.framework & FBComposeView.bundle dans votre projet.

Remarque: assurez-vous d'utiliser celles à l' Debug-iphonesimulator. C'est le gros binaire. enter image description here

3voto

Vilém Kurz Points 2305

Nous avons résolu un problème similaire avec iOS 5 l'intégration de Twitter, et le résultat est:

Quand vous postez sur Twitter avec un dev construire ou via le simulateur, il sera presque toujours apparaître sur Twitter que "via iOS". Une fois que votre application est approuvée et que vous publiez sur l'AppStore construire il doit apparaître comme publiée par "YourAppName sur iOS" avec un lien vers les applications de l'appstore page.

source d'origine (ShareKit question de discussion)

Je suppose que Apple fait la même chose avec Facebook et d'autres services sociaux.

EDIT: malheureusement, ce n'est vraiment travaillé avec Twitter.cadre. Je pense que la meilleure explication et la réponse est de Daniel ci-dessus. Peut-être que c'est un temps de radar, de sorte que Apple sait, de ce que nous voulons.

Exemples d'utilisation de SLRequest avec Facebook sont dans cette SORTE de question

EDIT2: déposé un radar Bug ID# 12980058. J'espère qu'ils écoutent...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X