8

Ich hatte Facebook App lädt in Demo-Anwendung implementiert. Es funktionierte gut, aber keine Benachrichtigung erhalten.Facebook App lädt Benachrichtigung funktioniert nicht in IOS

Ich habe alle Detail in meiner Frage hinzugefügt, jetzt kann mir jemand sagen, was ist die Frage in meinem Code und was soll ich tun, um dies zu lösen. Ich habe erstellt Testbenutzer zum Testen dieser App.

Dieser Code funktioniert gut, es startet eine Dialogbox, die Freundesliste zeigt und zeigt auch, dass die App laden gesendet wird, aber wenn ich es in Freunde überprüfen Konto es keine Benachrichtigung nicht zeigen.

Meine Info.plist Datei

Ich glaube, ich habe einen Fehler in info.plsit unter URL-Typ (URL Schemes). Ich hatte eine Aktion geschrieben, die der Name der Methode ist, aber ich habe keine Idee, was ich in dieser Spalte schreiben sollte.

enter image description here

Appdelegate.m

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 
    BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication]; 
    if ([parsedUrl appLinkData]) 
    { 
     NSURL *targetUrl = [parsedUrl targetURL]; 
     [[[UIAlertView alloc] initWithTitle:@"Received link:" 
            message:[targetUrl absoluteString] 
            delegate:nil 
          cancelButtonTitle:@"OK" 
          otherButtonTitles:nil] show]; 
    } 
     return YES; } 

ViewController.h

Erste Ergebnis null, wenn appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results

genannt
- (IBAction)action:(UIButton *)sender 
{ 

    FBSDKAppInviteContent *content =[[FBSDKAppInviteContent alloc] init]; 
    content.appLinkURL = [NSURL URLWithString:@"https://fb.me/*****************"]; 

    [FBSDKAppInviteDialog showFromViewController:self withContent:content delegate:self]; 
} 

- (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results 
{ 
    NSLog(@" result %@",results); 
} 
- (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didFailWithError:(NSError *)error 
{ 
    NSLog(@"error = %@", error); 
    NSString *message = error.userInfo[FBSDKErrorLocalizedDescriptionKey] ?: 
    @"There was a problem sending the invite, please try again later."; 
    NSString *title = error.userInfo[FBSDKErrorLocalizedTitleKey] ?: @"Oops!"; 

    [[[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 

} 
+0

Hey ich auch gleiche Problem konfrontiert bin. Hast du die richtige Lösung gefunden? – ivarun

Antwort

15

Versuch mit dieser in Ihrem AppDelegate.m

Import dieses an der Spitze:

#import <FBSDKCoreKit/FBSDKCoreKit.h> 

und nutzen diese für die Anwendung: OpenURL: sourceapplication: Anmerkung

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation 
{ 
    if (!url) { 
     return NO; 
    } 

    [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; 

    return YES; 
} 

Dies verwendet die Facebook-SDK, um openurls anstelle eines benutzerdefinierten Handlers zu behandeln.

Dies löst die Delegiertenmethoden aus, die Sie definiert haben, und Sie können fortfahren, um den Benutzer zu warnen oder zu tun, was immer Sie wollen.

Auch in Ihrer info.plist muss der URLSchemes-Wert derselbe sein wie in Ihrer Facebook-Eingabe "URL mit einem benutzerdefinierten Schema". Zum Beispiel, wenn Sie myapp:// in Ihrem URL mit einem benutzerdefinierten Schema "auf dem Facebook-Dialog dann wäre Ihr URLScheme seine myapp (wo Sie haben derzeit action)

Alles, was Safari tut, ist wissen lassen, dass, wenn Sie rufen‚myapp: // 'in der URL-Leiste sollte es dann Ihre App öffnen. Sofern Sie Ihre Parameter nicht an die App übergeben, brauchen Sie nach dem 'myapp: //' nichts mehr auf dem Facebook-Bildschirm.

/----- ----- SIDE HINWEIS/

Vergewissern Sie sich in Ihrem Entwickler-Einstellungen (https://developers.facebook.com/apps/ {{App-ID}}/Einstellungen /) Sie die Plattform ios hinzugefügt haben, und haben sowohl eine Bundle-ID und die iPhone-Store-ID und iPad-Store-ID eingerichtet.

Screenshot from my app on facebook developer page

Sie jede App-ID verwenden (die man von itunes verbinden, genannt tatsächlich 'Apfel id') für das iphone & ipad app-ID (nur sicherstellen, dass seine eine gültige aus dem App Store, Namen müssen Sie nicht übereinstimmen) und verwenden Sie Ihre Bundle-ID für Ihre App. Die Nummer für das iPhone & iPad ID kann gleich sein. Dies ist wichtig, da Facebook die Benachrichtigung nicht an den Benutzer sendet, da es nicht weiß, wohin der Benutzer gesendet werden soll, wenn er die App nicht heruntergeladen hat. Setzen Sie dies ein und senden Sie eine weitere Benachrichtigung und es sollte funktionieren.

/---------- SIDE ANMERKUNG 2 -------------/

Bei Facebooks 'Quickstarts' unter Verwendung der App erstellen Link laden, Stellen Sie sicher, dass Sie die Parameter in der ios-Box richtig eingerichtet haben. Hier ist ein Beispiel dafür, was das Setup aussehen sollte. (Dies ist die Verbindung, die wie „https://fb.me/634411166661512“ aussieht)

Example setup of fb app link

‚URL mit einem benutzerdefinierten Schema‘ muss das gleiche sein, was auch immer Sie haben in Ihre info.plist - mit der obigen Antwort, wenn Sie "myapp" in Ihrer info.plist unter URLSchemes haben, würden Sie "myapp: //" in der Facebook "Url mit einem benutzerdefinierten Schema" setzen. Der App-Name kann alles sein, was nur zur Anzeige dient. Obwohl "App Store ID" optional ist, wird benötigt. Stellen Sie sicher, dass Sie das gleiche wie hier oben verwenden, wo Sie Ihre "iPad Store ID" und "iPhone Store Id" eingerichtet haben. Dadurch wird Apple aufgefordert, den Nutzer zum itunes-Store zu schicken, wenn er nicht über Ihre App verfügt.

+0

Hey ... Danke für deine Hilfe ... Nun gibt es mir ****** Ergebnis zurück { didComplete = 1; ***** wenn **** didCompleteWithResults **** heißt .. Aber immer noch Keine Benachrichtigung an ein anderes Gerät erhalten. –

+1

Ich hatte 2 Test-Benutzer erstellt und beide sind Freunde voneinander, ich hatte App in einem Gerät installiert und mit einem test_user1 angemeldet, und ich hatte von test_user2 in einem anderen Gerät angemeldet und nicht die Anwendung in diesem Gerät installiert.Jetzt sende ich eine Benachrichtigung von test_user1 an test_user 2, aber es gibt keine Benachrichtigung von test_user2 –

+1

Aktualisierte meine Antwort, um dies zu erklären. Siehe 'Side Note' –

2

Zum Entwickler-Dashboard gehen. Wähle deine App aus. Fügen Sie die Plattform "Facebook Canvas" hinzu, legen Sie die Canvas-URL fest. Hoffe es funktioniert

+1

Ich war mit dem gleichen Problem endlich fertig :) –

0

Um funktionierende Benachrichtigungen zu erhalten, gehen Sie zu den Einstellungen und fügen Sie die erforderlichen Plattformen hinzu. Wenn Sie Benachrichtigungen über die native iOS-App erhalten möchten, fügen Sie die iOS-Plattform für "Android" und für das Web "Facebook Canvas" hinzu. Fügen Sie die erforderlichen Daten für jede Plattform hinzu und versuchen Sie es dann. Ich hoffe, es wird funktionieren.

Denken Sie daran: Für iOS und Android native Anwendungen, müssen Sie die Daten der Live-Anwendungen hinzufügen müssen :)

0

App lädt nur auf Mobile Platform arbeiten. Ich hatte auch das selbe Problem, das ich bei Simulator to Web getestet habe. Hoffen, dass dies hilft :)

enter image description here

Verwandte Themen