我需要阅读One Signal的推送通知信息.取决于我需要在我的电子商务应用程序中更改产品的交付状态.
怎么看?
当我的应用程序位于前台时,会出现一个警告.如何在接收推送通知时阻止这种情况出现?
有没有办法在一个信号web-push-sdk手动添加用户和取消订阅?
我在我的subscribeOneSignal()功能中试过这个,但没有发生任何事情.
OneSignal.push(function() {
OneSignal.registerForPushNotifications();
});
Run Code Online (Sandbox Code Playgroud)
我有简单的html页面,其中有两个按钮,一个是"订阅",另一个是"取消订阅",现在当用户点击"订阅"按钮时,他应该添加一个信号,当他点击"取消订阅"按钮时,他不应该收到通知.
<!DOCTYPE html>
<html>
<head>
<link rel="manifest" href="/manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
<script>
var OneSignal = window.OneSignal || [];
OneSignal.push(["init", {
appId: "345345-asdf-345",
autoRegister: false,
notifyButton: {
enable: true
}
}]);
function subscribeOneSignal(){
OneSignal.push(function() {
OneSignal.registerForPushNotifications();
});
OneSignal.push(function() {
OneSignal.registerForPushNotifications({
modalPrompt: true
});
});
}
function unSubscribeOneSignal(){
//unsubscribe functionality goes here
}
</script>
</head>
<body>
<p>OneSingle Testing</p>
<br>
<button onclick="subscribeOneSignal()">Subscribe </button>
<button onclick="unSubscribeOneSignal()">Unsubscribe </button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在使用OneSignal来管理我的推送通知.对于某些通知,我收到:
通知必须包含英语内容
但我只是用英语发送一切......
oneSignal.postNotification(["headings" : ["en": "\(who)"],
"subtitle" : ["en": "\(subtitle)"],
"contents" : ["en": "\(contents)"],
"include_player_ids": [result]],
Run Code Online (Sandbox Code Playgroud)
谁,副标题,内容是字符串,结果是接收者ID.大多数通知都是发送的,对于一些我收到错误消息.
安慰:
> ERROR: Create notification failed
Error Domain=OneSignalError Code=400 "(null)" UserInfo={returned={
errors = (
" Notifications must have English language content"
);
}}
Run Code Online (Sandbox Code Playgroud)
我的完整功能:
func sendPush(_ receiverID: String, _ who: String, _ didWhat: String, _ message: String?) {
var subtitle = ""
var contents = ""
if message != nil {
contents = message!
}
switch didWhat {
case "likePost": …Run Code Online (Sandbox Code Playgroud) 我有一个离子应用程序使用ionic1制作并使用OneSignal进行推送通知.目前,在以下情况下,一个信号适用于推送通知: - 应用程序已打开 - 应用程序处于后台或终止,单击推送通知
使用这两个函数handleNotificationReceived和handleNotificationOpened
window.plugins.OneSignal.handleNotificationReceived(function(jsonData) {
$state.go('panicalarm');
console.log("navigate to panicalarm page");
})
window.plugins.OneSignal.handleNotificationOpened(function(jsonData) {
$state.go('panicalarm');
console.log("navigate to panicalarm page");
})
Run Code Online (Sandbox Code Playgroud)
我想知道,如何在直接启动应用程序时处理推送通知,或者在不点击推送通知的情况下将应用程序从后台运行到前台?那可能吗 ?
我们正在开发按需摄影应用程序。所以基本上我们有。2 个 Android 应用程序(用户和摄影师) 2 个 iOS 应用程序(用户和摄影师)
使用 firebase 配置的 Android Push 和 Firebase 允许我们针对一个 Firebase 键配置 2 个 Android 应用程序。因此,多个 Android 应用程序正在使用 1 个信号应用程序 ID。
但iOS端不允许我们这样做,我们需要配置2个iOS应用程序和1个信号应用程序ID。
我们怎样才能让这一切成为可能?
我是颤振新手并尝试实现推送通知。我使用 ONE SIGNAL 进行推送通知
在这里,我初始化了一个信号并获取了playerId,并将其发送到服务器。
void oneSignalInit() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
OneSignal.shared.init('one signal id');
OneSignal.shared.setInFocusDisplayType(OSNotificationDisplayType.notification);
status = await OneSignal.shared.getPermissionSubscriptionState();
var playerId = status.subscriptionStatus.userId;
print(playerId);
preferences.setString(Constants.PLAYER_ID, playerId);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我收到来自一个信号的通知并从中获取所需的数据。
notificationHandler() {
OneSignal.shared.setNotificationReceivedHandler((OSNotification notification) {
// will be called whenever a notification is received
var data = notification.payload.additionalData;
print(data['body']['tripID'].toString());
showNotification(message);
});
Run Code Online (Sandbox Code Playgroud)
现在,我正在提出我的自定义通知,使用 flutter_local_notification 依赖项
showNotification(var msg) async {
print("show notification is working");
AndroidNotificationDetails androidPlatformChannelSpecifics =
new AndroidNotificationDetails(
msg, msg, msg);
IOSNotificationDetails iOSPlatformChannelSpecifics =
new IOSNotificationDetails();
NotificationDetails platformChannelSpecifics = new …Run Code Online (Sandbox Code Playgroud) 我在我的 flutter 应用程序中使用一个信号,除了通知没有图标(带有默认账单图标)之外,一切都很好。
我已阅读一个信号的文档,并通过Android Studio生成了一个带有名称的AssetsImagePROJECT/android/res/ic_stat_onesignal_default
然后我在真实设备上使用该命令构建了应用程序flutter run --release,但通知仍然带有默认的帐单图标而不是我的应用程序图标!
AndroidManifest.xml文件中是否也需要一些代码?
我已经更新了我的 cocoapods,但 OneSignal 出现错误。
错误
类型“OneSignal”没有成员“setSubscription”
OneSignal.setSubscription(true)
Run Code Online (Sandbox Code Playgroud)
在范围内找不到类型“OSPermissionSubscriptionState”
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
Run Code Online (Sandbox Code Playgroud)
该代码在运行更新之前已编译。
我还收到“类型‘OneSignal’没有成员‘setSubscription’
老的
OneSignal.setSubscription(true)
Run Code Online (Sandbox Code Playgroud)
新的
OneSignal.disablePush(false)
Run Code Online (Sandbox Code Playgroud)
老的
func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) {
if !stateChanges.from.status && stateChanges.to.subscribed {
print("Subscribed for OneSignal push notifications!")
// get player ID
stateChanges.to.userId
print(userID)
print("************************")
}
print("SubscriptionStateChange: \n\(stateChanges)")
}
Run Code Online (Sandbox Code Playgroud)
新的
func onOSPermissionChanged(_ stateChanges: OSPermissionStateChanges!) {
// Example of detecting answering the permission prompt
if stateChanges.from.status == OSNotificationPermission.notDetermined {
if stateChanges.to.status == OSNotificationPermission.authorized {
let deviceState = OneSignal.getDeviceState()
let userID = deviceState?.userId
print(userID)
print("************************") …Run Code Online (Sandbox Code Playgroud) 我已经将 OneSignal sdk 集成到我的 React-Native 项目中,一切似乎都工作正常,除了当我们向推送消息添加标题时,Android 会收到双推送通知。当我们发送没有标题的推送通知时,android 会收到一个(按预期)。非常感谢任何建议。
编辑:
我的代码:
// App.js
OneSignal.setAppId("my-app-id");
//Method for handling notifications received while app in foreground
OneSignal.setNotificationWillShowInForegroundHandler(notificationReceivedEvent =>
{
let notification = notificationReceivedEvent.getNotification();
const data = notification.additionalData
notificationReceivedEvent.complete(notification);
});
//Method for handling notifications opened
OneSignal.setNotificationOpenedHandler(notification => {
console.log("OneSignal: notification opened:", notification);
});
Run Code Online (Sandbox Code Playgroud)
我通过仪表板 - app.onesignal.com创建新的推送通知来发送推送通知。