iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Modern Web

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

[Day16] 提醒功能-1:設定環境

  • 分享至 

  • xImage
  •  

今日關鍵字:notification


當初想要完成的最重要功能就是這個了
動畫開播三十分鐘前請通知我一下!/images/emoticon/emoticon32.gif

首先還是上github尋找看看
https://ithelp.ithome.com.tw/upload/images/20200915/20121828kocE0PcuL3.png
沒有特別原因我都會選星星多的

react-native-push-notification

yarn add react-native-push-notification @types/react-native-push-notification @react-native-community/push-notification-ios

cd ios && pod install && cd..

這時要注意github上的一段話

NOTE: For Android, you will still have to manually update the AndroidManifest.xml (as below) in order to use Scheduled Notifications.

由於最終要使用的是Scheduled Notifications,這裡只能乖乖手動安裝/images/emoticon/emoticon17.gif

將以下加進android/app/src/main/AndroidManifest.xml

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

    <application ....>
        <meta-data  android:name="com.dieam.reactnativepushnotification.notification_channel_name"
                android:value="YOUR NOTIFICATION CHANNEL NAME"/>
        <meta-data  android:name="com.dieam.reactnativepushnotification.notification_channel_description"
                    android:value="YOUR NOTIFICATION CHANNEL DESCRIPTION"/>

        <!-- Change the value to true to enable pop-up for in foreground (remote-only, for local use ignoreInForeground) -->
        <meta-data  android:name="com.dieam.reactnativepushnotification.notification_foreground"
                    android:value="false"/>
        <!-- Change the value to false if you don't want the creation of the default channel -->
        <meta-data  android:name="com.dieam.reactnativepushnotification.channel_create_default"
                    android:value="true"/>
        <!-- Change the resource name to your App's accent color - or any other color you want -->
        <meta-data  android:name="com.dieam.reactnativepushnotification.notification_color"
                    android:resource="@color/white"/> <!-- or @android:color/{name} to use a standard color -->

        <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" />
        <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
        <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <service
            android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
     .....

android/app/src/main/res/values/新增colors.xml

<resources>
    <color name="white">#FFF</color>
</resources>

設定完之後可以拿官方範例來做更改
設定寫在

NotifService.js
NotificationHandler.js

然後import進App.js

import NotifService from './NotifService';

這裡要注意NotificationHandler中的PushNotification.configure
不要放進元件裡寫,因為可能會發生因為元件還沒load而無法使用的情形


明天來把今天的設定實際使用看看
...
好我知道我今天看起來沒幹什麼
實際上是因為在把

NotifService.js
NotificationHandler.js

轉成

NotifService.ts
NotificationHandler.ts

的過程不是很順利
實際上這個套件對ts的支援好像不是很好

如果真的遇到消不掉的地方
有時候可以這樣

// @ts-ignore
報錯的地方

有時退一步海闊天空啊/images/emoticon/emoticon47.gif

參考:react-native-push-notification


上一篇
[Day15] 搜尋頁面
下一篇
[Day17] 提醒功能-2:即時通知
系列文
我不用Expo啦,React Native!33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言