8

Tôi đã thực hiện lời mời tham gia Ứng dụng Facebook trong Ứng dụng Trình diễn. Nó hoạt động tốt nhưng không nhận được thông báo.Thông báo mời ứng dụng Facebook không hoạt động trong ios

Tôi đã thêm tất cả chi tiết vào câu hỏi của mình, bây giờ bất cứ ai có thể cho tôi biết số vấn đề gì trong mã của tôi và tôi nên làm gì để giải quyết vấn đề này. Tôi có đã tạo người dùng thử nghiệm để thử nghiệm ứng dụng này.

Mã này hoạt động tốt, nó sẽ khởi chạy hộp thoại, cho thấy danh sách bạn bè và cũng cho thấy rằng các ứng dụng mời được gửi nhưng khi tôi kiểm tra nó trong bạn bè chiếm nó không hiển thị bất kỳ thông báo.

file Info.plist My

Tôi nghĩ rằng tôi có một sai lầm trong info.plsit dưới Loại URL (URL Schemes). Tôi đã viết hành động đó là tên của phương pháp nhưng tôi không có bất kỳ ý tưởng những gì tôi nên viết trong cột này.

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

Bắt quả null khi appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results gọi

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

Xin chào, tôi cũng đang gặp phải vấn đề tương tự. bạn đã tìm được giải pháp phù hợp chưa? – ivarun

Trả lời

15

thử có này trong AppDelegate.m bạn

nhập khẩu này ở đầu trang:

#import <FBSDKCoreKit/FBSDKCoreKit.h> 

và sử dụng cho các ứng dụng: OpenURL: sourceapplication: chú thích

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

Điều này sử dụng sdk facebook để xử lý openurls thay vì một trình xử lý tùy chỉnh.

Điều này sẽ kích hoạt các phương thức đại biểu bạn đã xác định và sau đó bạn có thể tiến hành cảnh báo người dùng hoặc thực hiện bất cứ điều gì bạn muốn.

Cũng trong thông tin của bạn.plist giá trị URLSchemes cần phải giống như những gì bạn có trong url nhập của facebook 'với lược đồ tùy chỉnh'. Ví dụ nếu bạn có myapp:// trong bạn 'url với một chương trình tùy chỉnh' trên đối thoại facebook sau đó URLScheme của bạn sẽ là myapp (nơi bạn đang có action)

Tất cả điều đó không được phép săn biết rằng nếu bạn gọi 'myapp: // 'trong thanh url thì nó sẽ mở ứng dụng của bạn. Trừ khi thông số của bạn đi qua các ứng dụng bạn không cần bất cứ điều gì sau khi 'myapp: //' trong màn hình facebook.

/----- PHỤ CHÚ Ý -----/

Hãy chắc chắn rằng trong môi trường phát triển của bạn (https://developers.facebook.com/apps/ {{app-id}}/cài đặt /) bạn đã thêm ios nền tảng, và đã thiết lập cả hai id nhóm và id cửa hàng iphone và id cửa hàng ipad.

Screenshot from my app on facebook developer page

Bạn có thể sử dụng bất kỳ id ứng dụng (một từ itunes kết nối, thực sự gọi là 'táo id') cho iphone & ứng dụng ipad id (chỉ cần đảm bảo nó một giá trị từ cửa hàng ứng dụng, tên không cần phải khớp) và sử dụng id gói cho ứng dụng của bạn. Số cho iphone & id ipad có thể giống nhau. Điều này là rất quan trọng như facebook không cung cấp thông báo cho người dùng mà không có điều này bởi vì nó không biết nơi để gửi cho người dùng nếu họ havent tải về các ứng dụng. Đặt nó vào và gửi một thông báo khác và nó sẽ hoạt động.

/---------- SIDE Chú thích 2 -------------/

Khi sử dụng Facebooks 'Bắt ​​đầu nhanh' để tạo ra các ứng dụng mời liên kết, đảm bảo bạn đang thiết lập các tham số trong hộp ios chính xác. Dưới đây là một ví dụ về những gì thiết lập nên như thế nào. (Đây là liên kết giống như "https://fb.me/634411166661512")

Example setup of fb app link

Các 'Url với một chương trình tùy chỉnh' cần phải được giống nhau bất cứ điều gì bạn có trong info.plist của bạn - bằng cách sử dụng câu trả lời ở trên nếu bạn có "myapp" trong info.plist của bạn dưới URLSchemes bạn sẽ đặt "myapp: //" trong facebook "Url với một lược đồ tùy chỉnh". Tên ứng dụng có thể là bất cứ điều gì, đó chỉ là để hiển thị. Mặc dù thông báo cho biết "Id cửa hàng ứng dụng" là tùy chọn, nhưng yêu cầu . Hãy chắc chắn rằng bạn sử dụng cùng một ở đây như bạn đã làm ở trên, nơi bạn đặt "iPad Store Id của bạn" và "iPhone Store Id". Điều này nói với táo để đẩy người dùng đến cửa hàng itunes nếu họ không có ứng dụng của bạn.

+0

Xin chào ... Cảm ơn sự giúp đỡ của bạn ... Bây giờ nó trở lại kết quả ****** { didComplete = 1; ***** khi **** didCompleteWithResults **** được gọi là .. Nhưng vẫn Không nhận được thông báo nào cho một thiết bị khác. –

+1

Tôi đã tạo 2 người dùng thử và cả hai đều là bạn của nhau, tôi đã cài đặt ứng dụng trong một thiết bị và đăng nhập bằng một test_user1 và tôi đã đăng nhập bằng test_user2 trong một thiết bị khác và chưa cài đặt ứng dụng trong thiết bị đó.Bây giờ tôi đang gửi thông báo từ test_user1 đến test_user 2, nhưng không có thông báo nhận được bởi test_user2 –

+1

Cập nhật câu trả lời của tôi để giải thích điều này. Xem 'Side Note' –

2

Chuyển tới trang tổng quan dành cho nhà phát triển. chọn ứng dụng của bạn. thêm nền tảng "Facebook canvas", đặt canvas canvas. Hy vọng nó hoạt động

+1

Tôi đã phải đối mặt với cùng một vấn đề cuối cùng được thực hiện :) –

0

Để nhận thông báo làm việc, hãy chuyển đến cài đặt và thêm nền tảng bắt buộc. Nếu bạn muốn nhận thông báo trên ứng dụng gốc iOS hơn là thêm nền tảng "iOS" giống với "Android" và để thêm web "Facebook Canvas". Thêm dữ liệu cần thiết cho mỗi nền tảng và hơn là thử. Hy vọng nó sẽ hoạt động.

Hãy nhớ rằng: Đối với iOS và Android ứng dụng bản địa, bạn phải có thêm dữ liệu của các ứng dụng live :)

0

App Lời mời được chỉ làm việc trên Mobile Platform. Tôi cũng phải đối mặt với cùng một vấn đề tôi đã được thử nghiệm trên Simulator để Web. Hy vọng điều này sẽ giúp :)

enter image description here

Các vấn đề liên quan