我在我的网络应用程序中使用 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) 我正在尝试将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
我在我的项目中第一次使用onesignal 。我必须在某些事件上向特定用户(无论用户在 Chrome 或 Android 设备上登录)发送通知,例如 Whatsapp 也会在移动设备和网站上发送通知,并且仅当用户登录时才发送。我已成功向所有人发送通知用户。经过对 OneSignal 的一些研发后,我发现我必须为此目的向特定的玩家 ID 发送通知。但这里有一些我的问题/疑问。
如果有人可以解释这些要点并描述在我的数据库中存储playerid(何时以及如何)的工作流程,我们将不胜感激。
我正在尝试将 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
我正在处理我原来的 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) 我对应用程序开发、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) 我有大量用户订阅了 OneSignal。有没有办法将所有这些数据导出到 firebase,这样我就不必等待用户再次订阅。
One Signal 提供了类似的功能来从 Parse 导入用户数据,您可以向他们发送推送通知。 https://onesignal.com/parse
在我的应用程序中,我通过一个信号向用户发送通知。但有时一个信号返回 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) 我正在尝试在 React Native 应用程序中配置OneSignal React Native以用于推送通知。
环境设置
我按照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) 我试图让我的扑动应用程序在后台处理通知。我正在使用带有 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)