在React-Native中控制通知的声音和振动

时间:2018-08-06 13:12:31

标签: react-native react-native-android react-native-ios react-native-push-notification

我想知道是否可以在react-native项目中控制推送通知的声音振动

实际上,我想让用户决定通知是否应具有声音/振动。用户应该能够完全禁用这些功能。

我到处都在搜索它,但是我的问题与典型问题有所不同:

  • 我想让用户决定(是否应该禁用声音或振动),所以我想要一些具有Javascript实现的程序包或东西,以便可以将此功能添加到我的应用程序的设置视图中。 / li>
  • 我希望能够在IOS和Android上都做到这一点。(如果您只了解这两种情况,请随时反覆)

2 个答案:

答案 0 :(得分:1)

根据文档,您首先需要创建频道

PushNotification.createChannel(
    {
      channelId: "channel-id", // (required)
      channelName: "My channel", // (required)
      channelDescription: "A channel to categorise your notifications", // (optional) default: undefined.
      playSound: false, // (optional) default: true
      soundName: "default", // (optional) See `soundName` parameter of `localNotification` function
      importance: 4, // (optional) default: 4. Int value of the Android notification importance
      vibrate: true, // (optional) default: true. Creates the default vibration patten if true.
    },
    (created) => console.log(`createChannel returned '${created}'`) // (optional) callback returns whether the channel was created, false means it already existed.
  );

并在 localnotification 对象中使用此频道 ID“channel-id”

PushNotification.localNotification({
                channelId: "channel_id", 
                vibrate: true,
                title: "My Notification Title",
                message: "My Notification Message",
                onlyAlertOnce: false,
                ignoreInForeground: false,
                priority: "high",
            });

答案 1 :(得分:0)

您应该使用react-native-push-notification软件包。只需遵循文档即可。

安装软件包后,将其链接到项目。 设置完成通知(来自文档):

PushNotification.localNotification({
    /* Android Only Properties */
    id: '0', // (optional) Valid unique 32 bit integer specified as string. default: Autogenerated Unique ID
    ticker: "My Notification Ticker", // (optional)
    autoCancel: true, // (optional) default: true
    largeIcon: "ic_launcher", // (optional) default: "ic_launcher"
    smallIcon: "ic_notification", // (optional) default: "ic_notification" with fallback for "ic_launcher"
    bigText: "My big text that will be shown when notification is expanded", // (optional) default: "message" prop
    subText: "This is a subText", // (optional) default: none
    color: "red", // (optional) default: system default
    vibrate: true, // (optional) default: true
    vibration: 300, // vibration length in milliseconds, ignored if vibrate=false, default: 1000
    tag: 'some_tag', // (optional) add tag to message
    group: "group", // (optional) add group to message
    ongoing: false, // (optional) set whether this is an "ongoing" notification
    priority: "high", // (optional) set notification priority, default: high
    visibility: "private", // (optional) set notification visibility, default: private
    importance: "high", // (optional) set notification importance, default: high

    /* iOS only properties */
    alertAction: // (optional) default: view
    category: // (optional) default: null
    userInfo: // (optional) default: null (object containing additional notification data)

    /* iOS and Android properties */
    title: "My Notification Title", // (optional)
    message: "My Notification Message", // (required)
    playSound: false, // (optional) default: true
    soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played)
    number: '10', // (optional) Valid 32 bit integer specified as string. default: none (Cannot be zero)
    repeatType: 'day', // (optional) Repeating interval. Check 'Repeating Notifications' section for more info.
    actions: '["Yes", "No"]',  // (Android only) See the doc for notification actions to know more
});

该软件包适用于Android和iOS ...两个平台都有一个代码

要提的几点:

  1. iOS-振动和声音结合在一起,不能禁用声音而是激活振动
  2. iOS-要仅启用无声音的振动,您应该“附加”将被附加到sound属性的无声声音文件。