iT邦幫忙

第 12 屆 iThome 鐵人賽

0
Modern Web

我不用Expo啦,React Native!系列 第 32

[Day32] 提醒功能-6:最後的回馬槍

  • 分享至 

  • xImage
  •  

目前我的App的通知後
就會開啟通知的動畫的細節頁面
然而今天測試時
突然發現兩者只導到首頁就停了


首先要先回憶Day23
總共有兩種導航方法

  • A:一次到達目的/images/emoticon/emoticon08.gif
navigation.navigate('Home', {
  screen: 'AnimeDetail',
  params: { anime: notification.anime }
})
  • B:一步一腳印/images/emoticon/emoticon43.gif
navigation.navigate('Home')
navigation.navigate('AnimeDetail', {
    anime: notification.anime
})

目前iOS採用A方法
Android採用B方法


iOS

更改成B就可以了
...
...
...哪招?

A應該是官方做法:Passing params to a screen in a nested navigator
怎麼會無效...

樂觀一點看,至少寫法統一了/images/emoticon/emoticon07.gif


Android

Android跟之前iOS發生的問題類似
其實並不是導航失效
而是點擊通知時不會觸發綁定在上面的ontification函式

結論是:跟上兩篇的Splash Screen有關係

You cannot get the initial extras if there's another activity being opened at first.

這裡要來修改/android/app/src/main/java/com/專案名/
MainActivity.javaSplashActivity.java兩支檔案

新增內容

// MainActivity.java
import android.content.Intent; // add
...
// add
@Override
 public void onNewIntent(Intent intent) {
   super.onNewIntent(intent);
   setIntent(intent);
 }
// SplashActivity.java
    ...
    super.onCreate(savedInstanceState);

    Intent intent = new Intent(this, MainActivity.class);
    // add
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        intent.putExtras(extras);
    }
    // 
    startActivity(intent);
    finish();
   }

而導航的方法仍然是維持B


明天來幫App新增Icon

參考:onNotification is not getting called when opening the notification from background in Android


上一篇
[Day31] 初始畫面:原生版
下一篇
[Day33] 加入Icon(順便偷渡完結感想)
系列文
我不用Expo啦,React Native!33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言