FacebookSDK接入的那些坑

更加详细的步骤
audience-network接入的步骤和遇到的问题探讨
http://bbs.csdn.net/topics/392021910

1,使用aar代替jar,对Android Studio熟悉的同学建议直接看第4步
1)首先需要开发工具使用Android studio而不是Eclipse;
一个Android studio Module等于一个Eclipse project;
一个Eclipse project等于一个Eclipse workSpace;
2)Android studio中添加依赖
以接入FacebookSDK的原生广告AudienceNetwork为例子,需要依赖DebugSettings.aar和AudienceNetwork.aar
1)放arr包到libs下
AudienceNetwork.aar和DebugSettings.aar放到yourProject/yourModule/libs下面
2)在build.gradle中添加依赖
yourProject/yourModule/build.gradle/dependencies中增加如下配置
这里写图片描述

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile(name: 'AudienceNetwork', ext: 'aar')
    compile(name: 'DebugSettings', ext: 'aar')
  }

3)刷新工程
增加完毕之后,记得点击那个Sync Project with Gradle Files,刷新工程就可以调用FacebookSDK提供的方法了。

2,Add your development and release key hashes
需要获取android studio的release key hashes
最简单的方法:直接采用代码的方式就可以获取;

//Add your development and release key hashes
    public static String printKeyHash(Activity context) {
        PackageInfo packageInfo;
        String key = null;
        try {
            //getting application package name, as defined in manifest
            String packageName = context.getApplicationContext().getPackageName();

            //Retriving package info
            packageInfo = context.getPackageManager().getPackageInfo(packageName,
                    PackageManager.GET_SIGNATURES);

            Log.e("Package Name=", context.getApplicationContext().getPackageName());

            for (Signature signature : packageInfo.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                key = new String(Base64.encode(md.digest(), 0));

                // String key = new String(Base64.encodeBytes(md.digest()));
                Log.e("Key Hash=", key);
            }
        } catch (PackageManager.NameNotFoundException e1) {
            Log.e("Name not found", e1.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.e("No such an algorithm", e.toString());
        } catch (Exception e) {
            Log.e("Exception", e.toString());
        }

        return key;
    }

3,Failed to find provider info for com.facebook.katana.provider.AttributionIdProvider

logcat报错日志

08-04 04:51:31.293: E/ActivityThread(13933): Failed to find provider info for com.facebook.katana.provider.AttributionIdProvider
08-04 04:51:32.765: I/linux(13933): onError 1001 No fill. We are not able to serve ads to this person. Please refer to https://developers.facebook.com/docs/audience-network/faq#a12. If you are integrating Audience Network for the first time, you can use test ads https://developers.facebook.com/docs/audience-network/testing.

这个错误出现的原因有哪些?
给应用联网权限;国内要翻墙,测试机要能够连上facebook;安装facebook app并且登录;
我遇到的坑是什么?
没有安装facebook app;不仅仅需要安装,而且还需要登录Facebook APP。
4,aar转换成为jar,Eclipse中怎么使用aar
使用7-zip将aar包解压,里面有个class.jar;直接用这个jar就可以了。
5,参考文档
1)FacebookSDK 广告audiencenetwork对应的文档
https://developers.facebook.com/docs/audience-network/

https://developers.facebook.com/docs/audience-network/android
2)在 Android 应用中添加插播式广告
https://developers.facebook.com/docs/audience-network/android/interstitial/
6,问题求解过程
我是第一接入,最快的方法当然是看开发者文档,遇到错误就google,遇到报错就上stackoverflow;
7,audience-network接入的步骤和遇到的问题探讨
http://bbs.csdn.net/topics/392021910

8、采用openssl 方式key hashes
首先下一个文件keyHash(去这里下载 https://download.csdn.net/download/codehxy/11227399)
(如果在windows上就可以写一个keyHash.bat),内容如下

RELEASE_KEY_ALIAS=$1  
RELEASE_KEY_PASSWARD=$2
RELEASE_KEY_PATH=$3
keytool -exportcert -alias $RELEASE_KEY_ALIAS -storepass $RELEASE_KEY_PASSWARD -keystore $RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

怎么执行

sh keyHash.sh ALIAS PASSWARD  app\magiccamera.jks

三个参数分别是签名别名、密码以及签名文件路径

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值