2017-07-24 63 views
1

嗨,我有这个令人敬畏的应用程序,既可以为客户和企业所有者,所以可以说一个企业主连接一端和另一个客户,客户可以下订单的某种(不透露太多: D)和我想要的是企业主知道客户刚刚下了一个新的订单,考虑到这两个都有应用程序。有人可以指出我如何? 我正在使用Firebase实时数据库,我处理它很不错,但是当应用程序关闭并且客户端刚下了订单,它需要在业务所有者一侧弹出,我还没有尝试过通知但会发生什么情况我想它不难理解,我只是希望在下订单时触发企业主应用程序。android - 来自其他手机的即时通知。怎么样?

谢谢你的时间。

+0

即使其关闭。 –

+0

你应该保留数据库监听器,意思是不要在'OnStop()' –

+0

中删除它们,尝试实现一个后台服务,它充当db监听器 –

回答

0

您可以使用后台服务,我实际上做了类似您需要的Firebase功能,我们需要通知某些用户其他用户按下了紧急按钮。所以下面是我所做的一些示例代码,您需要一个粘性服务和一个Firebase侦听器,我不知道当前版本是否与我一样工作,但这里是您可以使用的,或者至少我可以给你了解如何去做你需要的东西。

public class DummyService extends Service implements ValueEventListener, ChildEventListener { 

private Query mRef; 

public static final String FIREBASE_URL = "https://your-firebase-url.firebaseio.com/"; 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 


@Override 
public void onCreate() { 
    super.onCreate(); 

    // some stuff else you need to do 

    Firebase.setAndroidContext(this); 
    // this will be your main ref, it'll hear everything on your firebase db 
    Firebase mFirebaseRoot = new Firebase(DummyService.FIREBASE_URL); 
    mRef = mFirebaseRoot; 
    // if you want to hear an specific query you could use something like I used 
    // you can read the docs at firebase web 
    //mRef = mFirebaseRoot.child("your_child); 
    mRef.addListenerForSingleValueEvent(this); 
    mRef.addChildEventListener(this); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY; 
} 

@Override 
public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
    // read the docs of how this listeners work 
    if (something) { 
     notifyUser(); 
    } 
} 

@Override 
public void onChildChanged(DataSnapshot dataSnapshot, String s) {} 

@Override 
public void onChildRemoved(DataSnapshot dataSnapshot) {} 

@Override 
public void onChildMoved(DataSnapshot dataSnapshot, String s) {} 

@Override 
public void onDataChange(DataSnapshot dataSnapshot) {} 

@Override 
public void onCancelled(FirebaseError firebaseError) {} 

} 

而且你可以使用一个BroadcastReceiver时赶上设备启动和火你的服务,所以这样一来,用户不需要打开应用程序,它会永远运行。

希望这会有用,遗憾的代码示例indents,我不为什么看起来像这样哈哈。

+0

这dosent似乎编译 –

+0

Firebase作为一个对象剂量不存在,也许我应该尝试别的 –

+0

我无法使用此代码作为基地更新您指的对象是无效的,请一些... –