8

Zaimplementowałem zaproszenia do aplikacji na Facebooku w aplikacji demonstracyjnej. Działało dobrze, ale nie otrzymało powiadomienia.Aplikacja na Facebooku zaprasza na powiadomienia, które nie działają w ios.

Dodałem wszystkie szczegóły w moim pytaniu, teraz może ktoś mi powiedzieć co jest problem w moim kodu i co należy zrobić, aby rozwiązać ten problem. Mam stworzonych użytkowników testowych do testowania tej aplikacji.

Ten kod działa poprawnie, to otwiera okno dialogowe, pokazując listy znajomych, a także pokazuje, że aplikacja zostanie wysłana zaprosić ale kiedy sprawdzić go w znajomych konto nie wykazuje żadnego powiadomienia.

Moja Info.plist pliku

myślę, że mam błąd w info.plsit pod wpisz adres URL (URL programy). Napisałem akcję, która jest nazwą metody, ale nie mam pojęcia, co powinienem napisać w tej kolumnie.

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

Pierwsze wynik NULL gdy appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results nazywa

- (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

Hej, mam do czynienia z tym samym problemem. czy znalazłeś właściwe rozwiązanie? – ivarun

Odpowiedz

15

try Mając to na swojej AppDelegate.m

import ten na górze:

#import <FBSDKCoreKit/FBSDKCoreKit.h> 

i wykorzystują to do wniosku: OpenURL: sourceapplication: adnotacji

- (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; 
} 

Używa facebook sdk do obsługi operacji otwierania zamiast niestandardowego programu obsługi.

Spowoduje to uruchomienie zdefiniowanych metod delegatów, a następnie można przejść do ostrzeżenia użytkownika lub zrobić, co chcesz.

Również w twoim pliku info.plist wartość URLSchemes musi być taka sama, jak ta, którą masz na wejściu do Facebooka "url ze schematem niestandardowym". Na przykład, jeśli masz myapp:// w swoim „url z systemem niestandardowym” na dialogu facebook wówczas URLScheme byłoby myapp (gdzie masz aktualnie action)

Wszystko co robi to pozwala safari wiedzieć, że jeśli nazywamy „MojaApl: // na pasku adresu, to powinna otworzyć twoją aplikację. O ile parametry przekazujące do aplikacji nie są potrzebne po "myapp: //" na ekranie na Facebooku.

/----- marginesie -----/

Upewnij w ustawieniach programistycznych (https://developers.facebook.com/apps/ {{app-id}}/Ustawienia /) dodaniu platformy iOS, i ustawiono zarówno identyfikator pakietu, jak i identyfikator sklepu iPhone'a i identyfikator sklepu ipad.

Screenshot from my app on facebook developer page

można użyć dowolnej aplikacji id (jeden z iTunes Connect, w rzeczywistości nazywa się „Apple ID”) dla iPhone & iPada id (tylko upewnij się jej prawidłowym jeden ze sklepu z aplikacjami, nazwy nie musisz się zgadzać) i użyj swojego identyfikatora pakietu dla swojej aplikacji. Numer dla iPhone'a & ipad id można być taki sam. Ma to kluczowe znaczenie, ponieważ Facebook nie dostarcza powiadomienia użytkownikowi bez tego, ponieważ nie wie, gdzie wysłać użytkownika, jeśli nie pobrał aplikacji. Wstaw to i wyślij kolejne powiadomienie i powinno działać.

/---------- marginesie 2 -------------/

Podczas korzystania Facebooks 'quick Rozpoczyna', aby utworzyć aplikację zaprosić link upewnij się, że poprawnie ustawiłeś parametry w skrzynce ios. Oto przykład tego, co konfiguracja powinna wyglądać. (To jest link, który wygląda jak „https://fb.me/634411166661512”)

Example setup of fb app link

«URL ze schematem niestandardowym» musi być taka sama, co masz w twoja info.plist - używając powyższej odpowiedzi, jeśli masz "myapp" w twojej info.plist pod URLSchemes, wstawisz "myapp: //" na facebooku "Url ze schematem niestandardowym". Nazwa aplikacji może być dowolna, to tylko do wyświetlenia. Chociaż jest napisane, że "Identyfikator sklepu App Store" jest opcjonalny, wymagana jest . Upewnij się, że używasz tego samego, co powyżej, w miejscu, w którym ustawiłeś "ID iPada Store" i "iPhone Store Id". To mówi jabłko, aby popchnąć użytkownika do sklepu iTunes, jeśli nie ma Twojej aplikacji.

+0

Hej ... Dzięki za pomoc ... Teraz mój powrót mnie ****** wynik { didComplete = 1; *****, gdy **** didCompleteWithResults **** jest nazywany .. Ale nadal Żadne powiadomienie nie dotarło do innego urządzenia. –

+1

Stworzyłem 2 testowego użytkownika i obydwaj są przyjaciółmi, zainstalowałem aplikację na jednym urządzeniu i zalogowałem się z jednym test_user1, a ja zalogowałem się przez test_user2 w innym urządzeniu i nie zainstalowałem aplikacji na tym urządzeniu.Teraz wysyłam powiadomienie z test_user1 do test_user 2, ale nie otrzymałem żadnego powiadomienia przez test_user2 –

+1

Zaktualizowałem moją odpowiedź, aby to wyjaśnić. Zobacz "Notatka boczna" –

2

Przejdź do pulpitu programisty. wybierz swoją aplikację. dodaj platformę "płótno na Facebooku", ustaw canvas URL. Mam nadzieję, że działa

+1

W końcu stanąłem wobec tego samego problemu :) –

0

Aby otrzymać powiadomienia robocze, przejdź do ustawień i dodaj wymagane platformy. Jeśli chcesz otrzymywać powiadomienie na temat natywnej aplikacji na system iOS, dodaj platformę "iOS" dla aplikacji "Android" i dodaj "Canvas na Facebooku". Dodaj wymagane dane dla każdej platformy, a następnie spróbuj. Mam nadzieję, że to zadziała.

Pamiętaj: Dla iOS i Android natywnych aplikacji, trzeba posiadać, aby dodać dane z żywymi aplikacji :)

0

App zaprasza działa tylko w telefonach komórkowych Platformy. Miałem też do czynienia z tym samym problemem, który testowałem na Simulatorze w sieci. Mam nadzieję, że to pomoże :)

enter image description here