Вопрос по facebook-graph-api, objective-c, facebook-ios-sdk, ios, facebook-invite-friends – Приложение Facebook предлагает уведомления, не работающие в IOS

8

Я внедрил приглашения Facebook App в демо-приложении. Он работал нормально, но не получил уведомление.

Я добавил все детали в мой вопрос, и теперь любой может сказать мне, что является проблемой в моем коде и что я должен сделать, чтобы решить эту проблему. Я создал тестовых пользователей для тестирования этого приложения.

Этот код работает нормально, он запускает диалоговое окно, показывающее список друзей, а также показывает, что приглашение приложения отправлено, но когда я проверяю его в учетной записи друзей, оно не показывает никаких уведомлений.

Мой файл Info.plist

Я думаю, что у меня есть ошибка в info.plsit под типом URL (схемы URL). Я написал действие, которое является названием метода, но я понятия не имею, что я должен написать в этом столбце.

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

Получение результата null, когдаappInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results называется

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

}
Эй, я тоже сталкиваюсь с той же проблемой. Вы нашли правильное решение? iVarun

Ваш Ответ

4   ответа
15

импортировать это вверху:

#import <FBSDKCoreKit/FBSDKCoreKit.h>

и используйте это для приложения: openurl: sourceapplication: annotation

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

Это использует SDK facebook для обработки openurls вместо пользовательского обработчика.

Это вызовет методы делегата, которые вы определили, и тогда вы сможете продолжать оповещать пользователя или делать все, что вы хотите.

Также в вашем info.plist значение URLSchemes должно совпадать с тем, что вы указали во введенном в Facebook «url с пользовательской схемой». Например, если у вас естьmyapp:// в вашем «URL с пользовательской схемой» в диалоге facebook, тогда ваш URLScheme будетmyapp (где у вас естьaction)

Все, что делает, это позволяет safari знать, что если вы вызовете «myapp: //» в строке URL, то оно должно открыть ваше приложение. Если вы не передаете параметры в приложение, вам не нужно ничего после «myapp: //» на экране facebook.

/-----ПРИМЕЧАНИЕ-----/

Убедитесь в настройках вашего разработчика (https://developers.facebook.com/apps/{{app-id}} / settings /) вы добавили платформу ios и настроилии то и другое идентификатор пакета и идентификатор магазина iphone и идентификатор магазина ipad.

Для идентификатора приложения iphone & ipad вы можете использовать любой идентификатор приложения (тот, что из itunes connect, на самом деле называемый «яблочный идентификатор») (просто убедитесь, что он правильный из магазина приложений, имена не должны совпадать) и использовать свой пакет идентификатор вашего приложения. Номер для iphone & ipad idМожно быть таким же. Это очень важно, так как Facebook не доставляет уведомления пользователю без этого, потому что он не знает, куда отправить пользователя, если они не загрузили приложение. Вставьте это и отправьте другое уведомление, и оно должно работать.

/ ---------- БОКОВОЕ ПРИМЕЧАНИЕ 2 ------------- /

При использовании «Быстрых запусков» в Facebook для создания ссылки приглашения приложения убедитесь, что вы правильно настраиваете параметры в окне ios. Вот пример того, как должна выглядеть установка. (Это ссылка, которая выглядит какhttps://fb.me/634411166661512«)

«URL-адрес с пользовательской схемой» должен быть таким же, как у вас в вашем info.plist - используя ответ выше, если у вас есть «myapp» в вашем info.plist под URLSchemes, вы бы поместили «myapp: //» в Фейсбук "Урл с нестандартной схемой". Название приложения может быть чем угодно, только для отображения. Хотя он говорит, что «App Store Id» является необязательным, оннеобходимо, Убедитесь, что вы используете тот же, что и здесь, где вы указали «Id Store Id» и «iPhone Store Id». Это говорит Apple, чтобы подтолкнуть пользователя в магазин itunes, если у них нет вашего приложения.

Я создал 2 тестовых пользователей, и оба они являются друзьями друг друга, я установил приложение на одном устройстве и вошел в систему с одним test_user1, и я вошел в систему с помощью test_user2 на другом устройстве и не установил приложение на этом устройстве. Сейчас я отправляю уведомление от test_user1 до test_user 2, но test_user2 не получает уведомление Aarti Oza
Эй, спасибо за ваш ответ .. Это работает. Но все же есть проблема ... Когда я отправляю уведомление от test_user1 в test_user2, оно получает уведомление, но не отображается в уведомлении в представлении уведомлений iPhone. Это прямо показывает на значке приложения Facebook. Aarti Oza
Эй .... большое спасибо за вашу помощь ... но согласно вашему ответу я должен ввести только идентификатор App Store, и я ввел его, но все еще не работает .... Aarti Oza
Может быть, я добавил все учетные данные неправильно, поэтому это происходит ... Но когда я собираюсь внедрить их в живое приложение, я добавлю все учетные данные правильно, и тогда это может сработать ... Aarti Oza
2

добавить платформу "Facebook canvas", установить URL-адрес canvas. Надеюсь, что это работает

Я столкнулся с той же проблемой, наконец, сделано :) Nakul Sharma
0

зайдите в настройки и добавьте необходимые платформы. Если вы хотите получать уведомления о родном приложении iOS, то добавьте платформу «iOS», то же самое для «Android», а для сети добавьте «Facebook Canvas». Добавьте необходимые данные для каждой платформы, а затем попробуйте. Надеюсь, это сработает.

Помните: для родных приложений для iOS и Android вы должны добавить данные живых приложений :)

0

лкнулся с той же проблемой, которую я тестировал на Simulator to Web. Надеюсь, это поможет :)

Похожие вопросы