SDK接入主流分为这么几类,SDK接入主流分为这么几类

SDK接入(1)之Android Facebook SDK接入

由于玩耍已上线,且处于维护阶段,所以有空写写各个SDK接入进程和境遇的难点,也视作1种专门的学问总计。SDK接入主流分为这么几类,登录支付分享推送统计等,达到借‘他山之石’的意义。顺便嘲讽下,将来国内是个路子就弄个所谓的投机的SDK,各个文书档案更新比不上时、文书档案与Sample不对应、萨姆ple测试不全或运转报错、才能扶助调换无人回复等,真是备受其害。

SDK接入(1)之Android Facebook SDK接入

出于玩耍已上线,且处于维护阶段,所以有空写写各类SDK接入进程和境遇的难点,也视作壹种工作总括。SDK接入主流分为这么几类,登录支付分享推送统计等,达到借‘他山之石’的法力。顺便戏弄下,现在境内是个渠道就弄个所谓的自身的SDK,种种文书档案更新不马上、文档与萨姆ple不对应、Sample测试不全或运维报错、本事协理沟通无人过来等,真是相当受其害。

(一)接入前希图职业

  1. 需科学上网(FQ,VPN什么的投机解决),注册推特(TWTR.US)(前面统称FB)帐号。
  2. FB
    SDK下载地址为:https://origincache.facebook.com/developers/resources/?id=facebook-android-sdk-current.zip
  3. FB
    SDK接入文书档案地址为:https://developers.facebook.com/docs/android/getting-started/
  4. FB
    SDK完整源码地址为:https://github.com/facebook/facebook-android-sdk

(①)接入前准备职业

  1. 需科学上网(FQ,VPN什么的友善解决),注册Instagram(前边统称FB)帐号。
  2. FB
    SDK下载地址为:https://origincache.facebook.com/developers/resources/?id=facebook-android-sdk-current.zip
  3. FB
    SDK接入文书档案地址为:https://developers.facebook.com/docs/android/getting-started/
  4. FB
    SDK完整源码地址为:https://github.com/facebook/facebook-android-sdk

(二)创造应用,获取使用编号和密钥

步骤如下:

  1. 登录facebook.com,在侧面能够看来有个开垦者项,点击管理应用程序。如图:
    图片 1
  2. 创造应用,并增多要发布的平台。填写Package NameDefault Activity Class Name
    图片 2

    注:Package Name为应用程序的包名,与Manifest里面包车型大巴包名对应。
    Default Activity Class
    Name为第四个运行的Activity,要用完整的类名,与表明如下的Activity类名对应。

         <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="bigdevil"/>
        </intent-filter>  
    

例如:org.cocos2dx.lua.SplashActivity

  1. 生成KeyHash,并配置KeyHash。
    • 下载OpenSSL,并加多到情形变量。
    • 命令行执行:keytool -exportcert -alias androiddebugkey -keystore
      %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary |
      openssl
      base64,注意-keystore后边是具名文件的不2秘诀,实施完现在会生成如图:
      图片 3
  2. 将转换的KeyHash(三十个字符的字符串)配置到FB后台,可增添八个。
  3. 别的配置,如图:
    图片 4
    图片 5
    图片 6

(贰)创造应用,获取使用编号和密钥

步骤如下:

  1. 登录facebook.com,在侧面能够见见有个开荒者项,点击管理应用程序。如图:
    图片 7
  2. 创造应用,并增多要公布的阳台。填写Package NameDefault Activity Class Name
    图片 8

    注:Package Name为应用程序的包名,与Manifest里面包车型大巴包名对应。
    Default Activity Class
    Name为第两个运行的Activity,要用完整的类名,与申明如下的Activity类名对应。

         <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="bigdevil"/>
        </intent-filter>  
    

例如:org.cocos2dx.lua.SplashActivity

  1. 生成KeyHash,并配置KeyHash。
    • 下载OpenSSL,并增加到情状变量。
    • 命令行推行:keytool -exportcert -alias androiddebugkey -keystore
      %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary |
      openssl
      base6四,注意-keystore前边是签字文件的门路,推行完以往会生成如图:
      图片 9
  2. 将转变的KeyHash(2柒个字符的字符串)配置到FB后台,可加多五个。
  3. 别的配置,如图:
    图片 10
    图片 11
    图片 12

(3)下载FB SDK,并布置参数

FB SDK下载后的文件,形如:facebook-android-sdk-四.8.贰.aar。
若选取AndroidStudio作为IDE,则导入该.aar文件。步骤为:

  1. 直接将facebook-android-sdk-4.八.贰.aar复制到工程的libs路线下。如图:
    图片 13
  2. 修改build.gradle,加多如下配置:

       repositories {
           flatDir {
               dirs 'libs'
           }
       }  
    
       compile(name: 'facebook-android-sdk-4.8.2', ext: 'aar')
    

    如图:
    图片 14
    然后,重新Rebuild Project一下,成功则会扭转如下:
    图片 15

若选拔Eclipse作为IDE,则需将.aar文件解压。解压完如下图:
图片 16

拷贝assetsresAndroidManifest.xmlclasses.jar,新建Eclipse工程并覆盖对应文件。

(叁)下载FB SDK,并安顿参数

FB SDK下载后的文书,形如:facebook-android-sdk-四.八.二.aar。
若接纳AndroidStudio作为IDE,则导入该.aar文件。步骤为:

  1. 直接将facebook-android-sdk-四.八.二.aar复制到工程的libs路线下。如图:
    图片 17
  2. 修改build.gradle,增多如下配置:

       repositories {
           flatDir {
               dirs 'libs'
           }
       }  
    
       compile(name: 'facebook-android-sdk-4.8.2', ext: 'aar')
    

    如图:
    图片 18
    然后,重新Rebuild Project一下,成功则会转变如下:
    图片 19

若使用Eclipse作为IDE,则需将.aar文件解压。解压完如下图:
图片 20

拷贝assetsresAndroidManifest.xmlclasses.jar,新建Eclipse工程并掩盖对应文件。

(4)FB SDK接入

  1. 布置FB
    id(FB后台获取的使用编号)。展开res/values/strings.xml,添加:

    <string name="facebook_app_id">172633573185136</string>
    
  2. 配置AndroidManifest,增添权限

    <uses-permission android:name="android.permission.INTERNET"/>
    

    在application项下配置:

    <application android:label="@string/app_name">
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    </application>  
    
  3. 开端化FB SDK和激活事件,在Application的onCreate()调用如下代码:

    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
    }
    
  4. 讲FacebookActivity配置到AndroidManifest中,如下:

    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />  
    
  5. FB登入分为带推特(TWTR.US)(推特(TWTR.US))按键和不带Facebook(TWTLacrosse.US)开关二种情势。带推特(TWTR.US)开关必要将FB提供的LoginButton丰裕到协调的布局中。而游戏登入,只需求点击相应的娱乐登入按键再调用FB登陆就可以。所以上边介绍下,不带照片墙按键的那种样式。

在MainActivity中的onCreate()中注册登5回调,代码如下:

    callbackManager = CallbackManager.Factory.create();

    LoginManager.getInstance().registerCallback(callbackManager,
           new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                     // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                 }
    });
  1. FB登入,注意登入权限需使用public_profile,并在onActivityResult中管理用户授权,代码如下:

    private static final String PERMISSION = "public_profile";  
    
    LoginManager loginManager = LoginManager.getInstance();
    loginManager.setDefaultAudience(loginManager.getDefaultAudience());
    loginManager.setLoginBehavior(loginManager.getLoginBehavior());
    loginManager.logInWithReadPermissions(AppActivity.context_self, Arrays.asList(PERMISSION));  
    

onActivityResult管理代码:

    public static void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (callbackManager != null) {
            callbackManager.onActivityResult(requestCode, resultCode, data);
        }
    }
  1. 报到结果管理,在FacebookCallback中,代码如下:

    public void onSuccess(LoginResult loginResult) {
        AccessToken accessToken = loginResult.getAccessToken();
        String userId = accessToken.getUserId();
        String token = accessToken.getToken();
        // TODO:拿到userId和token,传给游戏服务器校验
    }
    
    public void onCancel() {
    }
    
    public void onError(FacebookException exception) {
        if (exception instanceof FacebookAuthorizationException) {
            LoginManager.getInstance().logOut();
            // TODO:
        }
    }
    
  2. 应用App伊夫ntsLogger来增多自定义总计事件,登六和支付(分别对应游戏FB登六和倡导支付并付出成功时)的示范代码如下:

登入事件总计:

    Bundle parameters = new Bundle();
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, roleId);
    parameters.putInt(AppEventsConstants.EVENT_NAME_ACHIEVED_LEVEL, roleLevel);
    AppEventsLogger logger = AppEventsLogger.newLogger(this, FACEBOOK_AD_ID);
    logger.logEvent("Login", parameters);

支出事件总括:

    AppEventsLogger logger = AppEventsLogger.newLogger(this, FACEBOOK_AD_ID);
    logger.logPurchase(BigDecimal.valueOf(orderInfo.getInt("price")), Currency.getInstance(SdkImp.CURRENCY));  

(4)FB SDK接入

  1. 配置FB
    id(FB后台获取的施用编号)。展开res/values/strings.xml,添加:

    <string name="facebook_app_id">172633573185136</string>
    
  2. 配置AndroidManifest,增加权力

    <uses-permission android:name="android.permission.INTERNET"/>
    

    在application项下配置:

    <application android:label="@string/app_name">
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    </application>  
    
  3. 初叶化FB SDK和激活事件,在Application的onCreate()调用如下代码:

    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
    }
    
  4. 讲FacebookActivity配置到AndroidManifest中,如下:

    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />  
    
  5. FB登录分为带Instagram按键和不带推特开关二种样式。带推文(Tweet)按键供给将FB提供的LoginButton增添到自身的布局中。而娱乐登陆,只要求点击相应的游艺登陆开关再调用FB登陆就能够。所以下边介绍下,不带推特(Twitter)按键的那种样式。

在MainActivity中的onCreate()中登记登陆遍调,代码如下:

    callbackManager = CallbackManager.Factory.create();

    LoginManager.getInstance().registerCallback(callbackManager,
           new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                     // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                 }
    });
  1. FB登陆,注意登入权限需采纳public_profile,并在onActivityResult中拍卖用户授权,代码如下:

    private static final String PERMISSION = "public_profile";  
    
    LoginManager loginManager = LoginManager.getInstance();
    loginManager.setDefaultAudience(loginManager.getDefaultAudience());
    loginManager.setLoginBehavior(loginManager.getLoginBehavior());
    loginManager.logInWithReadPermissions(AppActivity.context_self, Arrays.asList(PERMISSION));  
    

onActivityResult管理代码:

    public static void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (callbackManager != null) {
            callbackManager.onActivityResult(requestCode, resultCode, data);
        }
    }
  1. 登入结果管理,在FacebookCallback中,代码如下:

    public void onSuccess(LoginResult loginResult) {
        AccessToken accessToken = loginResult.getAccessToken();
        String userId = accessToken.getUserId();
        String token = accessToken.getToken();
        // TODO:拿到userId和token,传给游戏服务器校验
    }
    
    public void onCancel() {
    }
    
    public void onError(FacebookException exception) {
        if (exception instanceof FacebookAuthorizationException) {
            LoginManager.getInstance().logOut();
            // TODO:
        }
    }
    
  2. 行使App伊夫ntsLogger来增添自定义总括事件,登入和开荒(分别对应游戏FB登入和发起支付并开拓成功时)的演示代码如下:

登六事件计算:

    Bundle parameters = new Bundle();
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, roleId);
    parameters.putInt(AppEventsConstants.EVENT_NAME_ACHIEVED_LEVEL, roleLevel);
    AppEventsLogger logger = AppEventsLogger.newLogger(this, FACEBOOK_AD_ID);
    logger.logEvent("Login", parameters);

开采事件总括:

    AppEventsLogger logger = AppEventsLogger.newLogger(this, FACEBOOK_AD_ID);
    logger.logPurchase(BigDecimal.valueOf(orderInfo.getInt("price")), Currency.getInstance(SdkImp.CURRENCY));  

FB SDK接入常见错误

  1. 登入权限非常,推特(TWTR.US)(Facebook)Callback的onError中回到FacebookAuthorizationException:
    消除:一般是FB帐号设置了安全认证,举个例子登陆须要安全码之类的,供给修改FB安全设置。

  2. Invalid key hash错误。如图:
    图片 21
    消除:供给确定正式打包的签字文件(.keystore)和生成keyHash时是或不是为同三个签字文件。

作者:AlphaGL
出处:http://www.cnblogs.com/alphagl/
版权全部,招待保留最初的作品链接举行转发 🙂

FB SDK接入常见错误

  1. 签到权限相当,TwitterCallback的onError中回到照片墙AuthorizationException:
    缓慢解决:一般是FB帐号设置了平安声明,举例登入必要安全码之类的,供给修改FB安全设置。

  2. Invalid key hash错误。如图:
    图片 22
    缓和:要求肯定正式打包的签字文件(.keystore)和生成keyHash时是不是为同贰个具名文件。

作者:AlphaGL
出处:http://www.cnblogs.com/alphagl/
版权全部,招待保留原著链接进行转发 🙂

相关文章