3

Facebook SDK でわかっているように、App Plist でURL タイプFacebookAppIDキーを提供する必要があります。

私の質問は、メソッドのように、手動で plist に入力せずにプログラムで保存するUIApplicationDelegate方法didFinishLaunchingWithOptionsです。

を使用して設定しようとしましNSUserDefaultsたが、このエラーが発生し続けます:

No AppID provided; either pass an AppID to init, or add a string valued key with the appropriate id named FacebookAppID to the bundle *.plist'

理由はわかりませんが、XcodeNSUserDefaultsはデフォルトのアプリ Plist を別の場所に使用してキーを保存していると思います。

これを修正する方法を知っている人はいますか?

4

3 に答える 3

7

アプリIDを設定するには、これがうまくいくようです:

[FBSettings setDefaultAppID: @"123456789"];

URL の種類に似たものがあるかどうかはわかりません。ただし、URL の種類の登録は、iOS がアプリのインストール時に行うものだと想像できます。その場合、コードではなく plist ファイルに登録する必要があるかもしれません。

于 2013-06-14T00:10:53.570 に答える
1

何らかの理由で安全ではありません。アプリの plist ファイルを取得してすべての情報を読み取るのは非常に簡単です。アプリの秘密鍵を安全に保つ必要があります。しかし、本当にそうしたい場合は、plist ファイルからデータを解析できます。

NSString *path = [[NSBundle mainBundle] pathForResource:@"yourPlistFileName" ofType:@"plist"];

NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:path];

NSLog(@"You app key is %@",[dict objectForKey:@"yourKeyFromPlist"]);

すべてのアプリで共有されるものを保存する最も簡単な方法は、NSUserDefaults を使用することです。ただし、変更を行った後は忘れずにsynchronizeを呼び出してください。ここに NSUserDefaults のドキュメントがあります。これは、plist にデータを書き込むための良い解決策ではないと思いますが、本当に書きたい場合は、次のコードを使用します。

NSString* plistPath = nil;
NSFileManager* manager = [NSFileManager defaultManager];
if ((plistPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"yourPlistFileName.plist"])) 
{
    if ([manager isWritableFileAtPath:plistPath]) 
    {
        NSMutableDictionary* infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
        [infoDict setObject:@"your key value" forKey:@"Your Key"];
        [infoDict writeToFile:plistPath atomically:NO];
        [manager setAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] ofItemAtPath:[[NSBundle mainBundle] bundlePath] error:nil];
    }
}
于 2012-12-25T13:20:58.777 に答える