ラベル firebase の投稿を表示しています。 すべての投稿を表示
ラベル firebase の投稿を表示しています。 すべての投稿を表示

ReactNativeでAndroid対応する話

前提

ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話

トラブルシューティング

Build.VERSION_CODES.Q が存在しないエラー

compileSdkVersionを29以上にすると解決

メモリー足りないエラー

Execution failed for task ':app:mergeExtDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > java.lang.OutOfMemoryError (no error message)

コメントアウトを解除した

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

64K問題?

Cannot fit requested classes in a single dex file (# methods: 154819 > 65536 ; # fields: 126457 > 65536)

multiDexEnabled trueを追加

facebook sdkのエラー

The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

確かにまだ設定してないからなー。

FirebaseのAuthentication使ってるからそこら変の設定がもろもろ足りない。

React Native Firebase

https://rnfirebase.io/

Twitterの設定

中で使ってるライブラリーはこれ
react-native0.62.2使ってるから、gradleの追加や、MainApplication.javaへの追加は不要

Appleでログイン

使っているライブラリーはこちら

iOS開発時は1.0.0。Android対応は2.0.0からので、バージョンを最新にする(2.1.0)

  const response = await appleAuthAndroid.signIn();

ドキュメント通り実装しても、responseで取得できるのはid_tokenだけ。

{nonce: "XXXXXXXXX", state: "XXXXXXXXXXXX", id_token: "XXXXXXXXX", code: "XXXXXXXXXXX"} 

id_tokenはJWTなので、decodeすると、(便利なサイト https://jwt.io/)

{

  "iss": "https://appleid.apple.com",

  "aud": "xxxxxxxxxxxxxxxxxxxxxx",

  "exp": 1607694557,

  "iat": 1607608157,

  "sub": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "nonce": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "c_hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "email": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "email_verified": "true",

  "is_private_email": "true",

  "auth_time": 1607608157,

  "nonce_supported": true

}

こんな感じ

で?

Firebaseの本家の(ReactNativeじゃないほう)のAndroidのドキュメントをみてみる

https://firebase.google.com/docs/auth/android/apple

始めの方はSDK使えば簡単にできるようなことが書いてある。

「高度: 手動によるログインフローの処理」ここが参考になるかも

https://firebase.google.com/docs/auth/android/apple#advanced_handle_the_sign-in_flow_manually

AuthCredential credential =  OAuthProvider.newCredentialBuilder("apple.com")

    .setIdTokenWithRawNonce(appleIdToken, rawUnhashedNonce)

    .build();

mAuth.signInWithCredential(credential)

appleIdTokenとか書いてあるので、それ渡せば良い? appleIdTokenはAppAuthから取得する?んー。これも違うような。

Web版をみてみる。

https://firebase.google.com/docs/auth/web/apple


続きはまた明日・・・ 

 


Firebase Functionsの登録

GAE/goからFirebase Cloud Messagingを使う

ライブラリの選定

色々なオープンソースを使わせてもらい感謝してます!

star: 91 最終更新2/6

star: 12 最終更新5/12

star: 14 5/18


今回はGAEで使うため、httpクライアントを差し替えれるものを使いたかった。
あと、コードを見てみると、送信用のパラメータが一通り揃っているedganiukovさんの
ライブラリが良さそう

実装


func SendNotification(ctx context.Context, body string) error {

token := "sample_token"
// or
tokens :=[]string{  "sample_token", "sample_token2" }


msg := &fcm.Message{
Notification: &fcm.Notification{
Body:  body,
Badge: "1",
},
}

if len(tokens) == 1 {
msg.Token = token
} else {
msg.RegistrationIDs = tokens
}

// Create a FCM client to send the message.
o := fcm.WithHTTPClient(urlfetch.Client(ctx)) // GAEようにhttp clientを差し替える
client, _ := fcm.NewClient(os.Getenv("FIREBASE_API_KEY"), o)

// Send the message and receive the response without retries.
response, err := client.Send(msg)
if err != nil {
return err
}

log.Debugf(ctx, "%+v", response)

return nil
}

ReactNativeでAndroid対応する話

前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...