Day18 Plugin 从零开始到上架 01

目标

接下来将实作一个Flutter Plugin 来上架至pub.dev,为整合Instagram 基本显示 API在Android 以及iOS 的功能,此API 使用规则都在官方文件有介绍。

首先欲使用此Instagram Basic Display API,使用者必须先照官方文件取得INSTAGRAM_CLIENT_ID、INSTAGRAM_CLIENT_SECRET and REDIRECT_URI 资讯,并储存在Android 以及iOS端来使用,所以我们在Plugin 上也要设计Android 和iOS 储存这些机密资讯的方法。

Android端

我们需要使用者在android专案里,建立一个secret.properties,来为他们的专案设定这些资料,如下:

INSTAGRAM_CLIENT_ID = "388938XXXXXXXXX"
INSTAGRAM_CLIENT_SECRET = "f81e7feaXXXXXXXXXXXXXXXX"
REDIRECT_URI = "https://XXXXXXXXXXXX"

而在Plugin 里,我们就会在build.gradle引用Instagram base display api 所需的资料


def secretPropertiesFile = rootProject.file("secret.properties")
def secretProperties = new Properties()
secretProperties.load(new FileInputStream(secretPropertiesFile))

android {
    compileSdkVersion 30

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    defaultConfig {
        minSdkVersion 23

        buildConfigField("String", "INSTAGRAM_CLIENT_ID", secretProperties['INSTAGRAM_CLIENT_ID'])
        buildConfigField("String", "INSTAGRAM_CLIENT_SECRET", secretProperties['INSTAGRAM_CLIENT_SECRET'])
        buildConfigField("String", "REDIRECT_URI", secretProperties['REDIRECT_URI'])
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
}

iOS端

而在iOS 端我们需要使用者建立 Xcode Configuration Files:Secrets.xcconfig

INSTAGRAM_CLIENT_ID = "388938XXXXXXXXX"
INSTAGRAM_CLIENT_SECRET = "f81e7feaXXXXXXXXXXXXXXXX"
REDIRECT_URI = "https://XXXXXXXXXXXX"

之後在Plugin 里Info.plist就会去读取Instagram base display api 所需的资料

    <key>INSTAGRAM_CLIENT_ID</key>
	<string>$(INSTAGRAM_CLIENT_ID)</string>
	<key>INSTAGRAM_CLIENT_SECRET</key>
	<string>$(INSTAGRAM_CLIENT_SECRET)</string>
	<key>REDIRECT_URI</key>
	<string>$(REDIRECT_URI)</string>

<<:  Day20:【技术篇】无障碍网页之前端切版基本概念

>>:  18. PHPer x API document x Swagger API

Day10 while回圈

在写程序时,回圈是经常使用到的工具,他可以重复执行同样的工作,直到条件式不符合时跳出回圈,执行下一个...

Day 16. slate × Interfaces × CustomType

slate 将 typescript 的型别扩充相关的内容都集合在 interfaces/cust...

Day21 类别与物件--魔术方法construct and deconstruct

类是通过class关键字来定义的,是对某个物件的定义,包含有关物件名称、方法、属性和事件,不过实际上...

[Day - 27] - Spring 环境管理思想与设计

Abstract 许多开发者势必会遇到一种状况,就是在上线前势必会先放到测试主机进行测试,我们称之开...

[Day17] 强制转型

因 JavaScript 在执行阶段时,型别可不断转换,而这些型别的转换又可分为 明确的强制转型,以...