iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
Mobile Development

Flutter - 從 Packages & Plugins 掌握原生系列 第 18

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>

上一篇
Day17 開發套件 - 實作BasicMessageChannel
下一篇
Day19 Plugin 從零開始到上架 - 取得授權碼(Android)
系列文
Flutter - 從 Packages & Plugins 掌握原生30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言