使用Parse / FB SDK在IOS中使用ParseFacebookUtilsV4 :: initializeFacebookWithApplicationLaunchOptions问题

时间:2015-07-05 13:08:46

标签: ios facebook parse-platform

我仍然在我的项目中使用Objective-C,因为它是遗留的。之前我正在使用Parse,现在我正在尝试添加FB集成。我设法编译所有内容 - 这些是我通过CocoaPods安装的。

-(void) viewDidAppear:(BOOL)animated
{
    // Do any additional setup after loading the view, typically from a nib.
    if (![PFUser currentUser] || // Check if user is cached
        ![PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]) { // Check if user is linked to Facebook

        PFLogInViewController *logInController = [[PFLogInViewController alloc] init];
     logInController.fields = (PFLogInFieldsUsernameAndPassword
     | PFLogInFieldsFacebook
     | PFLogInFieldsDismissButton);
     [self presentViewController:logInController animated:YES completion:nil];
        [self presentViewController:loginViewController animated:YES completion:NULL];

    } else {
        NSLog(@"User is cached and showing content.");
    }
}

这是我的代码。

FirstViewController

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'You must initialize PFFacebookUtils with a call to +initializeFacebookWithApplicationLaunchOptions'

当视图显示并点击登录Facebook时,我有这个错误。

[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];

如果我在AppDelegate上添加这个, initializeFacebookWithApplicationLaunchOptions

我遇到了编译问题 - 没有已知的类。

基于this,我应该在PFFacebookUtils中添加一个临时hack,但该文件中不存在方法[PFFacebookUtils initializeFacebook];

我也尝试在我的AppDelegate中添加它。

+[PFFacebookUtils initializeFacebook]: unrecognized selector sent to class 0x10024f420
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[PFFacebookUtils initializeFacebook]: unrecognized selector sent to class 0x10024f420'

在这种情况下,错误是:

package com.aa.qc.task;

import android.os.AsyncTask;

import com.aa.qc.callbacks.ZleceniaLoadedListner;
import com.aa.qc.extras.ZleceniaSorter;
import com.aa.qc.extras.ZleceniaUtils;
import com.aa.qc.network.VolleySingleton;
import com.aa.qc.pojo.Zlecenia;
import com.android.volley.RequestQueue;

import java.util.ArrayList;


public class TaskLoadZlecenia extends AsyncTask<Void, Void, ArrayList<Zlecenia>>{

    private ZleceniaLoadedListner myComponent;
    private VolleySingleton volleySingleton;
    private RequestQueue requestQueue;
    private ZleceniaSorter mSorter = new ZleceniaSorter();


    public TaskLoadZlecenia(ZleceniaLoadedListner myComponent) {
        this.myComponent = myComponent;
        volleySingleton = VolleySingleton.getsInstance();
        requestQueue = volleySingleton.getmRequestQueue();

    }


    @Override
    protected ArrayList<Zlecenia> doInBackground(Void... params) {

        ArrayList<Zlecenia> listZlecenias = ZleceniaUtils.loadZlecenia(requestQueue);
        mSorter.sortZleceniaByTime(listZlecenias);
        return listZlecenias;
    }

    @Override
    protected void onPostExecute(ArrayList<Zlecenia> listZlecenias) {
        if (myComponent != null) {
            myComponent.onZleceniaLoaded(listZlecenias);

        }
    }

}

任何想法/解决方案?

2 个答案:

答案 0 :(得分:2)

确保您正在导入框架的V4

#import <ParseFacebookUtilsV4/PFFacebookUtils.h>

这是一个微妙的,但非常重要的区别,并且由于某种原因,它将只编译导入

#import <ParseFacebookUtils/PFFacebookUtils.h>

特别是如果你刚从普通的FB Utils切换。

答案 1 :(得分:0)

我遇到了同样的问题,所以我尝试删除Parse库并使用Cocoapods再次安装库,然后就可以了!我没有更改任何代码,只需将以下行添加到我的Podfile中:

pod 'Parse', '~> 1.7'
pod 'ParseFacebookUtilsV4', '~> 1.7'

我不知道为什么,但它确实有效。