标签: onesignal

使用 Headless JS 任务来处理推送通知的示例 React Native 应用程序

我在我的网络应用程序中使用 onesignal 来提供推送通知。

当我开始编写 React-native 应用程序时,我想知道是否有人可以提供一个有用的示例来展示如何使用 React-native 处理推送通知。

目前我所做的是在我的根组件构造函数中注册推送通知。但由于很少有关于具体何时运行的文档,我不确定是否应该将其移至 index.android.js 文件旁边进行AppRegistry.registerComponent调用?或者此时是否不能保证js环境已完全加载?

当前代码”

// index.android.js,index.ios.js
import React from 'react';
import {AppRegistry,Text,View} from 'react-native';

import OneSignal from 'react-native-onesignal';

class App extends Component {
  constructor(props) {
    // config oneSignal push and do startup tasks..
    this.$device = {};
    this.$push = []; // array to hold pending notifications.. just to 
                     // prevent losing them case app ui was not fully loaded when config is called
    OneSignal.configure({
        onIdsAvailable: (device) => {
          console.log('UserId = ', …
Run Code Online (Sandbox Code Playgroud)

push-notification reactjs react-native onesignal

5
推荐指数
0
解决办法
1690
查看次数

如何在应用程序中使用库的manifestPlaceholders?

我正在尝试将OneSignal SDK添加到我的 Android 库项目中。因此,我在我的库中添加了必要的依赖项,build.gradle并且还manifestPlaceholders

        // One Signal:
        manifestPlaceholders = [onesignal_app_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
                                // Project number pulled from dashboard, local value is ignored.
                                onesignal_google_project_number: "XXXXXXXXXXXX"]
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试构建一个使用我添加了 OneSignal 的库的演示应用程序时,我收到以下错误:

/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error:
    Attribute meta-data#onesignal_app_id@value at AndroidManifest.xml requires a placeholder substitution but no value for <onesignal_app_id> is provided.
/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error:
    Attribute meta-data#onesignal_google_project_number@value at AndroidManifest.xml requires a placeholder substitution but no value for <onesignal_google_project_number> is provided.

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.

:demoapp:processDebugManifest FAILED

FAILURE: Build failed …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-library android-gradle-plugin onesignal

5
推荐指数
1
解决办法
3246
查看次数

使用 onesignal 向特定用户发送通知

我在我的项目中第一次使用onesignal 。我必须在某些事件上向特定用户(无论用户在 Chrome 或 Android 设备上登录)发送通知,例如 Whatsapp 也会在移动设备和网站上发送通知,并且仅当用户登录时才发送。我已成功向所有人发送通知用户。经过对 OneSignal 的一些研发后,我发现我必须为此目的向特定的玩家 ID 发送通知。但这里有一些我的问题/疑问。

  • 我认为玩家ID就是设备ID。如果我是对的,如果当前用户注销而另一个用户在同一设备上登录怎么办?我怎样才能知道当用户更改时我不必向该玩家 ID 发送通知。
  • 单个用户会有多个playerId吗?一款适用于 Chrome,一款适用于 iOS 设备,一款适用于 Android 等?
  • 我如何将用户的playerId 存储在我的数据库中。因为我必须使用服务器 REST API来发送通知。

如果有人可以解释这些要点并描述在我的数据库中存储playerid(何时以及如何)的工作流程,我们将不胜感激。

php notifications laravel web-push onesignal

5
推荐指数
1
解决办法
2万
查看次数

获取 Google 广告 ID Xamarin 时出错

我正在尝试将 OneSignal 推送通知包含到我的 Xamarin android 应用程序中,在 OneSignal 面板中,它说有一个设备可以访问,但是当我在 (Sony Xperia E5303) 上运行我的应用程序时,它说:

Error getting Google Ad id:

[OneSignal] java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/ads/identifier/AdvertisingIdClient;

[OneSignal] at com.onesignal.AdvertisingIdProviderGPS.getIdentifier(AdvertisingIdProviderGPS.java:39)

[OneSignal] at com.onesignal.OneSignal$6.run(OneSignal.java:631)

[OneSignal] at java.lang.Thread.run(Thread.java:818)

[OneSignal] Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.identifier.AdvertisingIdClient" on path: DexPathList[[zip file "/data/app/com.app.app.app-1/base.apk"],nativeLibraryDirectories=[/data/app/com.app.app.app-1/lib/arm64, /data/app/com.app.app.app-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]

[OneSignal] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)

[OneSignal] at java.lang.ClassLoader.loadClass(ClassLoader.java:511)

[OneSignal] at java.lang.ClassLoader.loadClass(ClassLoader.java:469)

[OneSignal] ... 3 more

[OneSignal] Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.ads.identifier.AdvertisingIdClient

[OneSignal] at java.lang.Class.classForName(Native Method)

[OneSignal] at java.lang.BootClassLoader.findClass(ClassLoader.java:781)

[OneSignal] at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)

[OneSignal] at java.lang.ClassLoader.loadClass(ClassLoader.java:504)

[OneSignal] ... …
Run Code Online (Sandbox Code Playgroud)

android push-notification xamarin.android google-play-services onesignal

5
推荐指数
1
解决办法
292
查看次数

如何在处理通知时防止 IOS Swift 上的 OneSignal 打开 WebView

我正在处理我原来的 webview 中的 LunchUrl 但问题是当我把 kOSSettingsKeyInAppLaunchURL

[ true] 它在我原来的 webview 上打开新的 webview

[ false] 它在 safary 中打开链接

let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
    let payload = result?.notification.payload
    if let additionalData = result!.notification.payload!.additionalData {
        // DEEP LINK and open url in RedViewController
        centerViewController.receivedURL = payload!.launchURL as! String!

        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window?.rootViewController = centerViewController
        self.window?.makeKeyAndVisible()
    }
}

OneSignal.initWithLaunchOptions(launchOptions, appId: "*****", handleNotificationReceived: { (notification) in
    }, handleNotificationAction: notificationOpenedBlock , settings: [kOSSettingsKeyAutoPrompt : true, kOSSettingsKeyInFocusDisplayOption : OSNotificationDisplayType.notification.rawValue, kOSSettingsKeyInAppLaunchURL: true])
Run Code Online (Sandbox Code Playgroud)

uiwebview push-notification ios swift onesignal

5
推荐指数
1
解决办法
1295
查看次数

OneSignal 操作按钮

我对应用程序开发、Java 和 StackOverflow 完全陌生,这是我的第一个 Android 应用程序。

我已经实现了 OneSignal 用于推送通知传递。我只是想在通知中添加对操作按钮的支持。

我希望我的 SplashActivity 在用户触摸带有 ID:post 的 Action 按钮时启动,并且如果用户触摸带有 ID:app 的按钮,我希望在 Web 浏览器中启动一个 URL。

所以,这是我的 ApplicationClass.java:

package com.ananya.brokenhearts;

import android.app.Application;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import com.onesignal.OSNotificationAction;
import com.onesignal.OSNotificationOpenResult;
import com.onesignal.OneSignal;
import org.json.JSONObject;

public class ApplicationClass extends Application
{
    @Override
    public void onCreate()
    {
        super.onCreate();

        OneSignal.startInit(this)
                .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                .unsubscribeWhenNotificationsAreDisabled(true)
                .init();
    }

    private class NotificationOpenedHandler implements OneSignal.NotificationOpenedHandler
    {
        @Override
        public void notificationOpened(OSNotificationOpenResult result)
        {
            OSNotificationAction.ActionType actionType = result.action.type;
            JSONObject data = result.notification.payload.additionalData;
            String customKey; …
Run Code Online (Sandbox Code Playgroud)

java notifications android onesignal

5
推荐指数
1
解决办法
1115
查看次数

从 OneSignal 迁移到 Firebase 推送通知

我有大量用户订阅了 OneSignal。有没有办法将所有这些数据导出到 firebase,这样我就不必等待用户再次订阅。

One Signal 提供了类似的功能来从 Parse 导入用户数据,您可以向他们发送推送通知。 https://onesignal.com/parse

firebase onesignal

5
推荐指数
0
解决办法
948
查看次数

有时一个信号将 UserId 返回为 null

在我的应用程序中,我通过一个信号向用户发送通知。但有时一个信号返回 null 用户 ID...那时我面临向用户发送通知的问题。我该如何解决它。如果有人有解决方案,请与我分享

这是我生成用户 ID 的代码

    OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
            @Override
            public void idsAvailable(String userId, String registrationId) {
                Log.d("test","key is"+notification_key);
                notification_key=userId;
            }
        });
Run Code Online (Sandbox Code Playgroud)

我正在 MyApplication.class 中初始化一个信号

OneSignal.startInit(this)
                .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                .unsubscribeWhenNotificationsAreDisabled(true)
                .init();
Run Code Online (Sandbox Code Playgroud)

android onesignal

5
推荐指数
1
解决办法
9390
查看次数

包react-native-onesignal已被忽略,因为它包含无效的配置

我正在尝试在 React Native 应用程序中配置OneSignal React Native以用于推送通知。

环境设置

  1. 反应本机版本:0.60
  2. npm 版本 10.5

我按照React Native One Signal 官方文档中的以下步骤进行设置:

步骤 1 : npm install -g react-native-cli, 状态 : 完成

步骤 2 : react-native init OneSignalDemo, 状态 : 完成

在链接项目之前,我使用以下命令成功运行了我的项目:

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
Run Code Online (Sandbox Code Playgroud)

第 3 步:在链接我的库时,react-native link react-native-onesignal我的终端出现错误。将 oneSignal 与我的应用程序链接(根据官方文档),状态:失败

错误

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android …
Run Code Online (Sandbox Code Playgroud)

javascript react-native onesignal

5
推荐指数
1
解决办法
9149
查看次数

在后台使用 OneSignal PushNotifications 进行 Flutter

我试图让我的扑动应用程序在后台处理通知。我正在使用带有 onesignal 的推送通知,当我滑动我的应用程序并关闭它时,它不再调用 onReceiveHandler 。所以我读到了NotificationExtenderService: https://documentation.onesignal.com/docs/service-extensions#section-notification-extender-service

所以首先我在 android>app>main>java>..>NotificationsService.java 中创建了一个类,位于 MainActivity.java 旁边

并将其添加到 AndroidMainfest.xml 中,该文件位于 android>app>main 文件夹中:

<service
   android:name=".YOUR_CLASS_NAME"
   android:permission="android.permission.BIND_JOB_SERVICE"
   android:exported="false">
   <intent-filter>
      <action android:name="com.onesignal.NotificationExtender" />
   </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

因此,在没有做任何其他工作的情况下,我尝试运行我的应用程序,只是为了看看它在完成 flutter clean 等操作后是否没有显示任何错误。

但它似乎无法识别类方法和内容:

import com.onesignal.OSNotificationPayload;
import com.onesignal.NotificationExtenderService;

public class NotificationExtenderBareBonesExample extends NotificationExtenderService {
   @Override
   protected boolean onNotificationProcessing(OSNotificationReceivedResult receivedResult) {
      // Read properties from result.

      // Return true to stop the notification from displaying.
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

显示以下错误:

error: cannot find symbol
 protected boolean onNotificationProcessing(OSNotificationReceivedResult receivedResult) {
                                            ^
  symbol:   class OSNotificationReceivedResult
  location: …
Run Code Online (Sandbox Code Playgroud)

onesignal flutter

5
推荐指数
1
解决办法
3633
查看次数